JVM系列(一) - JVM总体概述

系列文章目录

 

 


前言

JVM是什么

JDK、JRE和JVM对比

 

JVMJREJDK 都是 java 语言的支柱,他们分工协作。但不同的是 Jdk 和 JRE 是真实存在的,而 JVM 是一个抽象的概念,并不真实存在。

JDK

JDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK)。JDK 物理存在,是 programming toolsJRE 和 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系列(一) - JVM总体概述JVM系列(一) - JVM总体概述

二、JVM组成架构

JVM系列(一) - JVM总体概述

(1)自动内存管理讲的是java运行时数据区里的部分,分为内存划分和垃圾收集器。

(2)执行子系统讲的是画红圈的三部分:类文件结构、类加载机制、字节码执行引擎。

(3)优化分别为编译期优化和运行期优化。

(4)并发讲的是虚拟机是如何实现多线程的。

具体可结合下面的JVM结构图来看。这张图是基于JDK7的。JDK7以前,常量池是存放在方法区的。从JDK7以后,常量池放到了堆中。
JVM系列(一) - JVM总体概述