1.什么是JVM执行引擎?
JVM执行引擎(JVM Execution Engine),也称为解释器(Interpreter)或即时执行器(Just-In-Time Executor,JIT)执行引擎是Java虚拟机核心的组成部分之一。JVM的将字节码装载到内存,但字节码并不能够直接运行在操作系统之上。为了执行内存中的字节码文件指令,执行引擎 (Execution Engine)就要将字节码指令解释/编译为对应平台上的本地机器指令。它的主要作用是执行字节码(Bytecode),即编译后的Java程序代码。
执行引擎的翻译过程有两种:
1、通过解释器将字节码文件转为机器指令执行;
2、使用即时编译器(JIT)将字节码文件的二进制流编译成机器指令执行。
目前市面的主流JVM采用解释器与即时编译器并存的架构。在Java虚拟机运行时,解释器和即时编译器相互协作,取长补短。在今天,Java程序的运行性能早已脱胎换骨,已经达到了可以和C/C++程序一较高下的地步。
2.解释器和即时编译器
1.解释器:每次解释都会将字节码文件解释为机器指令。整体效率较低,但当程序启动后, 解释器可以马上发挥作用,省去编译的时间,立即执行。适用于程序启动阶段或者对性能要求不高的场景。
2.即时编译器:则会将字节码文件编译为机器指令,存在方法区中,编译完成后直接执行本 地机器指令即可。编译器把代码编译成本地代码需要一定的执行时间,但编译为本地代码后 执行效率高。 当Java虚拟器启动时,解释器首先发挥作用,不必等待即时编译器全部编译完成后再 执行。随着时间的推移,编译器把越来越多的代码编译成本地代码,此时运行本地机器指令, 获得更高的执行效率。适用于长时间运行的程序,或者对性能有较高要求的场景。
3.举例说明:
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } }
当这个程序运行时,JVM执行引擎会加载HelloWorld
类的字节码,解释执行main
方法,最终输出"Hello, World!"。
4.总结
JVM执行引擎是JVM中负责执行字节码的组件,它通过解释执行和即时编译的方式确保Java程序能够高效运行。了解执行引擎的工作原理对于Java性能优化非常重要。