Javac编译与JIT编译

Posted Jed_SH

tags:

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

Java程序最初是仅仅通过解释器解释执行的,即对字节码逐条解释执行,这种方式的执行速度相对会比较慢,尤其当某个方法或代码块运行的特别频繁时,这种方式的执行效率就显得很低。于是后来在虚拟机中引入了JIT编译器(即时编译器),当虚拟机发现某个方法或代码块运行特别频繁时,就会把这些代码认定为“Hot Spot Code”(热点代码),为了提高热点代码的执行效率,在运行时,虚拟机将会把这些代码编译成与本地平台相关的机器码,并进行各层次的优化,完成这项任务的正是JIT编译器。

    现在主流的商用虚拟机(如Sun HotSpot、IBM J9)中几乎都同时包含解释器和编译器(三大商用虚拟机之一的JRockit是个例外,它内部没有解释器,因此会有启动相应时间长之类的缺点,但它主要是面向服务端的应用,这类应用一般不会重点关注启动时间)。二者各有优势:当程序需要迅速启动和执行时,解释器可以首先发挥作用,省去编译的时间,立即执行;当程序运行后,随着时间的推移,编译器逐渐会返回作用,把越来越多的代码编译成本地代码后,可以获取更高的执行效率。解释执行可以节约内存,而编译执行可以提升效率。

    HotSpot虚拟机中内置了两个JIT编译器:Client Complier和Server Complier,分别用在客户端和服务端,目前主流的HotSpot虚拟机中默认是采用解释器与其中一个编译器直接配合的方式工作。

来源:CSDN 原文:https://blog.csdn.net/ns_code/article/details/18009455

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

javac 编译与 JIT 编译

深入Java虚拟机之七:Javac编译与JIT编译

深入Java虚拟机之七:Javac编译与JIT编译

深入Java虚拟机之七:Javac编译与JIT编译

Javac编译和JIT编译

Javac编译过程