JVM系列(一) - JVM总体概述
系列文章目录
前言
JVM是什么
JDK、JRE和JVM对比
JVM
,JRE
,JDK
都是 java
语言的支柱,他们分工协作。但不同的是 Jdk
和 JRE
是真实存在的,而 JVM
是一个抽象的概念,并不真实存在。
JDK
JDK
(Java Development Kit) 是 Java
语言的软件开发工具包(SDK
)。JDK
物理存在,是 programming tools
、JRE
和 JVM
的一个集合。这是程序开发必备的,JDK配上idea,eclipse等就成了集成开发环境。
JRE
JRE
(Java Runtime Environment)Java
运行时环境,JRE
是物理存在的,主要由Java API
和 JVM
组成,提供了用于执行 java
应用程序最低要求的环境。
JVM
JVM
是一种用于计算设备的规范,它是一个虚构的计算机的软件实现,简单的说,JVM
是运行byte code
字节码程序的一个容器。
一、为什么需要JVM虚拟机?
JVM是java虚拟机(Java Virtual Machine),其实现了“一次编译,处处运行”的功能。JVM运行在实体计算机上,Java程序运行在JVM上,JVM屏蔽了与具体操作系统平台相关的信息,JVM
在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行,这样就实现了跨平台性。而与此相反的C++就不具备这么好的跨平台性,要在不同平台运行就需要重新编译。
二、JVM
组成架构
(1)自动内存管理讲的是java运行时数据区里的部分,分为内存划分和垃圾收集器。
(2)执行子系统讲的是画红圈的三部分:类文件结构、类加载机制、字节码执行引擎。
(3)优化分别为编译期优化和运行期优化。
(4)并发讲的是虚拟机是如何实现多线程的。
具体可结合下面的JVM结构图来看。这张图是基于JDK7的。JDK7以前,常量池是存放在方法区的。从JDK7以后,常量池放到了堆中。