JVM
由类加载器、运⾏时数据区、
JVM
解释器、 JI
T 即时编译器、垃圾回收器、本地⽅法
库等部分组成。
类加载器:
字节码必须通过类加载器,通过加载、验证、解析等校验步骤,将字节码⽂件中的类,加载⾄
J
VM
的中运⾏时数据区,才可以执⾏字节码。
运行时数据区:
存放JVM运行期间的方法调用,数据对象。
JVM解释器:
将字节码文件的每个指令解释为当前平台可以识别的机器码。
JIT即时编译器:
将字节码直接编译成机器码,提升执行效率。
JVM
通过热点代码的统计分析,识别⾼频的⽅法
调⽤,循环体、公共模块等,当超过阈值时,
JVM
会基于JIT
即时编译器
(
just-in-ti
me compiler
)将热点代码转换成机器码,直接交给
CPU
执⾏,提⾼执⾏效率。
阈值:Client
模式下默认阈值是
1500
次,在
Server
模式下是
10000
次。
垃圾回收器:
定期对运⾏时数据区进⾏垃圾对
象的回收,从⽽实现了内存⾃动管理。
JVM的工作流程:
![](https://img-blog.csdnimg.cn/direct/42c473c2d246418f9a10a3b6c3ea60d2.png)
由类加载器完成字节码⽂件的加载验证和解析,存储⾄运⾏时数据区,并由执⾏引擎中的解释
器,完成字节码到机器码的解释执⾏。同时进⾏热点代码的统计分析,调⽤
JIT
即时编译器将字节
码直接编译成机器码,提⾼执⾏效率。JVM运⾏期间的⽅法调、数据对象统⼀存放⾄运⾏时数据区。