导航
- 解释执行与编译执行
- 总结
解释执行与编译执行
Java 虽然是先编译再运行,但实际上,对于 JVM 来说,依然是逐条解释执行字节码文件中的指令,即大部分情况下,Java 都是解释执行的。
JVM通过 interpreter 解释器解释执行字节码指令,JIT(just in time) 编译器可以在某些情况下实现即时编译。它可以将Java 代码编译成本地代码,例如直接编译为 exe 文件,提高执行效率。
简单的来说,JVM 会针对热点代码进行即时编译。
例如在一个循环场景中,JVM 会对方法调用进行计数,如果发现某些函数调用频次非常高,可能就会触发编译执行。
Java 默认采用混合模式,即解释执行 + 编译执行。
相关JVM 参数:XX: CompileThreshold=10000
总结
解释器:
bytecode intepreter
JIT 编译器:
Just In Time Compiler
混合模式:
Java 默认采用混合模式执行代码,即 :
起始阶段解释器解释执行 + 热点代码编译执行
热点代码检测:
方法计数器 - 检测方法执行频次
循环计数器 - 检测循环执行频次