JVM引言
一 什么是JVM
1.1 定义
JVM,即Java Virtual Machine(Java虚拟机),是Java程序的运行环境(Java二进制字节码的运行环境)。
注:
Java程序的运行,要先将Java源码编译成二进制字节码,再由Java解释器解释运行,翻译成具体硬件环境和操作系统平台下的机器码,因此 Java 程序不能直接运行在现有的操作系统平台上,它必须运行在被称为 Java 虚拟机的软件平台之上。
1.2 好处
- 一次编写,到处运行
- 自动内存管理,垃圾回收功能
- 数组下标越界检查
- 多态
1.3 JVM、JRE和JDK的区别
JVM:Java虚拟机,Java二进制字节码的运行环境。
JRE:支持Java程序运行的标准环境,包括JVM和基础类库。
JDK:用于支持Java程序开发的最小环境,包括JVM+基础类库+编译工具。
二 常见的JVM
- Java虚拟机的实现有很多,不同虚拟机都要遵循一定的Java虚拟机规范,但是在具体实现上面可能稍有差异。
- 其中主流的Java虚拟机就是HotSpot,它是Sun/OracleJDK和OpenJDK中的默认Java虚拟机,也是目前使用范围最广的Java虚拟机,后面的讲解都是基于HotSpot。
三 JVM学习路线
JVM的组成,或者说JVM的学习,按下图的几大部分所示:
JVM学习路线(由简到难)
- JVM 内存结构的组成、各部分功能作用,学会利用内存诊断工具排查内存相关问题;
- JVM 的招牌功能-垃圾回收机制是如何工作的,如何进行垃圾回收调优;
- Java 程序从编译为字节码到加载到运行的全流程,各个阶段的优化处理;(主要是类文件结构、类加载器的学习)
- 了解 Java 内存模型相关知识,见识多线程并发读写共享数据时的问题和 Java 的解决方案。