playground

解释执行还是编译执行

.java文件在编译后会生成字节码,而字节码是不能直接在硬件上运行的,因此虚拟机需要把字节码翻译成字节码。

对HotSpot虚拟机而言,其翻译的方式有两种。

  1. 解释执行。即逐句翻译字节码并执行翻译后的机器码。
  2. 即时编译。把一个方法中的字节码都翻译成机器码然后再执行。

HotSpot默认采用混合模式,它会先对字节码进行解释执行,同时也会将多次执行的热点代码以方法为单位进行即时编译。即时编译在单独的线程中进行,并且对一个方法的解释执行和即时编译可以同时进行,即时编译完成后的方法在下一次被调用时就会以机器码的形式执行。