JVM中的JIT

Posted 纵一苇

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JVM中的JIT相关的知识,希望对你有一定的参考价值。

 

JVM中的JIT  


 

 

 

介绍Java虚拟机的文章或者书籍总会提到Java虚拟机中的JIT编译器,可是JIT编译器到底是什么?为什么需要JIT编译呢?


JIT编译器,是Just In Time编译的意思,又称即时编译。
 
Java程序是先从源代码编译到字节码,然后由Java虚拟机来解释执行字节码。当Java虚拟机在解释执行一个Java程序的字节码的时候,正常情况下Java虚拟机是解释一句执行一句,直到程序运行完毕。但是,很多程序中都存在一些”热点“区域,这些区域的代码会被反复调用执行,这样同一段代码就会被Java虚拟机反复的解释,这就导致了Java虚拟机执行效率的低下。为了应对这种情况,Java虚拟机就在执行Java字节码的过程中把检测到的反复执行的”热点“区域代码给编译成机器码,让后边对这段代码的调用可以不用再解释,提高执行效率,这个编译过程就叫JIT编译,因为编译是在字节码解释执行的过程中完成的,所以被称即时编译。
 
Java虚拟机在执行Java字节码的过程中不会对所有的字节码进行即时编译,因为只执行一次的字节码没必要编译成机器码,直接解释执行比即时编译还快。 

以上是关于JVM中的JIT的主要内容,如果未能解决你的问题,请参考以下文章

小师妹学JVM之:JIT中的PrintCompilation

JVM中的 JIT 即时编译及优化技术

JVM系列之:JIT中的Virtual Call接口

JVM之JIT编译器实战

JVM--12---执行引擎----解释器JIT 编译器

JVM解释器与JIT编译器如何并存?