JVM入门
# 回顾:JVM 的“上下级”
比较: jvm jre jdk
.java
被执行预编译,得到.class
中间代码,叫做 java 字节码。jvm 将字节码转换成机器码
已经知道,Java 既要编译也要解释。在 JVM 内,.class java 字节码完成解释
自测:
- 和操作系统打交道的是JVM
- 第一个开始包含编译的是 JDK
- 有应用服务器才叫 JavaEE
# JVM 结构
JVM 主要能分成 3 部分: 类加载器、JVM 内存、JVM 执行引擎
JVM 面对的是 Java 二进制字节码.class 文件
# 类被加载在 JVM 内存中
**类加载器、JVM 内存 注意,JVM 内存大致划分仍然是方法区、堆内存、栈内存。
在
this关键字和大致内存.md
中,初步记录了方法区、堆内存、栈内存。类在方法区,实例对象在堆区,方法(包括 main 方法)如果运行会到栈区来
具体:除了这 3 者,还有程序计数器。栈可以细分为虚拟机栈和本地方法栈
类在方法区中,实例对象在堆区。对象在调用方法时,会用到:虚拟机栈、程序计数器、本地方法栈
JVM 内存更细的划分:
中文名称 | 英文名称 |
---|---|
方法区 | Method Area |
堆区 | Heap Area |
程序计数器 | Program Counter |
虚拟机栈 | Java Virtual Machine Stack |
本地方法栈 | Native Method Stack |
# 方法由执行引擎逐行执行
方法由执行引擎逐行执行 即时编译器(JIT Compiler) 即时编译(优化执行)方法中的热点代码(被频繁调用的代码)
# JVM 存储引擎
中文名称 | 英文名称 |
---|---|
解释器 | Interpreter |
即时编译器 | Just-In-Time (JIT) Compiler |
垃圾回收 | Garbage Collector |