执行引擎
分配给运行时数据区的字节码将由执行引擎执行。执行引擎读取字节码并逐个执行它
主要包括:
- 解释器(Interpreter):解释器解释字节码较快,但执行慢。解释器的缺点是当一个方法被多次调用时,每次都需要新的解析;
- JIT编译器:JIT编译器消除了解释器的缺点。执行引擎将在转换字节码时使用解释器的帮助,但是当它发现重复的代码时,它使用JIT编译器,编译器会编译整个字节码并将其更改为本地代码。这个本地代码将直接用于重复的方法调用,从而提高系统性能
- 垃圾收集器:收集和删除未引用的对象;可以通过调用"System.gc()"触发垃圾收集器,但不能保证执行。JVM的垃圾回收收集创建的对象
JIT编译器
- 中间代码生成器:生成中间代码
- 代码优化器:负责优化上面生成的中间代码
- 目标代码生成器:负责生成机器代码或本地代码
- 分析器:一个特殊组件,负责查找热点,即该方法是否被多次调用;
【知识总结】
运行Java的每一个线程都是一个独立的虚拟机执行引擎的实例
注意:JVM是进程级别,执行引擎是线程级别