1. JVM概述
JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
2. 主流虚拟机概述
- HotSpot
Oracle/Sun JDK和OpenJDK都使用HotSPot VM的相同核心。
- J9
J9是IBM开发的高度模块化的JVM。
- JRockit
JRockit 与 HotSpot 同属于 Oracle,目前为止 Oracle 一直在推进HotSpot 与 JRockit 两款各有优势的虚拟机进行融合互补。
- Zing
由Azul Systems根据HostPot为基础改进的高性能低延迟的JVM Dalvik — Android上的Dalvik 虽然名字不叫JVM,但骨子里就是不折不扣的JVM。
3. JVM与操作系统关系
Java 是一门抽象程度特别高的语言,提供了自动内存管理等一系列的特性。这些特性直接在操作系统上实现是不太可能的,所以就需要 JVM 进行一番转换。JVM上承开发语言,下接操作系统,它的中间接口就是字节码。
4. JVM、JRE、JDK 的关系
- JVM 是 Java 程序能够运行的核心。
- JRE 是 JVM 标准加上实现的一大堆基础类库,就组成了 Java 的运行时环境。
- JDK 除了 JRE,JDK 还提供了一些非常好用的小工具,比如 javac、java、jar 等。
5. Java虚拟机规范与Java语言规范关系
左半部分是 Java 虚拟机规范,其实就是为输入和执行字节码提供一个运行环境。右半部分是我们常说的 Java 语法 规范,比如 switch、for、泛型、lambda 等相关的程序,最终都会编译成字节码。而连接左右两部分的桥梁依然是 Java 的字节码。
6. Java程序执行过程
- Java程序将 .java文件编译成 .class 字节码
- Java类加载器加载 .class 文件到内存中
- 执行引擎把字节码转换成二进制机器码执行程序
7. JVM架构图
JVM分为五大模块: 类装载器子系统 、 运行时数据区 、 执行引擎 、 本地方法接口 和 垃圾收集模块。