JVM 系列笔记目录
- 虚拟机的根底概念
- class 文件构造
- class 文件加载过程
- jvm 内存模型
- JVM 罕用指令
- GC 与调优
虚拟机的根底概念
1.Java 从编码到执行过程
一个 Java 源文件如 Hello.java
通过编译命令 javac
编译成 class 文件Hello.class
,在 JVM 中 ClassLoader 加载该 class 文件到 JVM 内存中,执行时候通过字节码解释器或是即时编译器解释后,交给执行引擎,执行引擎与 OS 硬件交互去实现执行。
2.JVM 与 class 文件
JVM 与 java 语言无关?是的,JVM 实际上是与 class 文件打交道,而不是间接与 Java 语言打交道。实践上,任何编程语言编译成 class 文件,就能够在 JVM 中执行,这也是上面说的跨语言平台。
3. 跨平台的语言和跨语言平台
跨平台语言:指该语言能够在不同的操作系统下运行,包含但不限于 linux、windows、mac、unix、andriod 等。
跨语言平台:如下图简略的例子,不论编程语言是 Java、scala、还是 kotlin,只有最终编译成 class 文件,就能在 JVM 中执行,这里的 Java Virtual Machine 就是跨语言平台。
4.JVM 的概念
何谓 Java Virtual Machine?简略了解就是虚构进去的一台电脑,有本人特定的字节码指令集(汇编语言的),有专门的内存治理、堆、栈、办法区等。
5.Java 语言标准和 JVM 标准
Java 语言标准: The Java Language Specification 具体能够参考 Oracle 官网 JVM 标准
JVM 标准: The Java Virtual Machine Specification 具体能够参考 Oracle 官网 JVM 标准
6. 常见的 JVM 标准实现
Oracle 官网规定了 JVM 的标准,不同的厂商针对这个标准实现各自的 JVM,如下表。
JVM 名称 | 厂商 | 阐明 |
---|---|---|
HotSpot | Oracle | 官网 JVM |
JRocket | BEA | 已经号称最快的虚拟机,被 Oracle 收买,合并进了 HotSpot |
J9 | IMB | |
MircrosoftVM | Microsoft | |
TaobaoVM | 阿里巴巴 | 淘宝的 JVM |
LiquidVM | BEA | 间接针对硬件的 JVM |
Azul VM | Azul | 最新垃圾回收器 Zing 的标杆 |
常识分享,转载请注明出处。学无先后,达者为先!