本文主要是介绍《深入理解Java虚拟机》:HotSpot虚拟机内的即时编译器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
HotSpot虚拟机内的即时编译器
最近在看周志明老师的《深入理解Java虚拟机》这本书,看了之后感觉收获挺多的,于是就写点读书总结吧。
先看如下问题:
- 1、 为何HotSpot虚拟机要使用解释器与编译器并存的架构?
- 2、 为何HotSpot虚拟机要实现两个不同的即时编译器?
- 3、 程序何时使用解释器执行?何时使用编译器执行?
- 4、 那些程序代码会被编译为本地代码?如何便以为本地代码?
Java程序最初是仅仅通过解释器解释执行的,即对字节码逐条解释执行,这种方式的执行速度相对会比较慢,尤其当某个方法或代码块运行的特别频繁时,这种方式的执行效率就显得很低。于是后来在虚拟机中引入了JIT编译器(即时编译器),当虚拟机发现某个方法或代码块运行特别频繁时,就会把这些代码认定为“Hot Spot Code”(热点代码),为了提高热点代码的执行效率,在运行时,虚拟机将会把这些代码编译成与本地平台相关的机器码,并进行各层次的优化,完成这项任务的正是JIT编译器。
下面以问答的形式进行叙述
- 1、为什么HotSpot虚拟机要使用解释器与编译器并存的架构??
现在主流的商用虚拟机(如Sun HotSpot、IBM J9)中几乎都同时包含解释器和编译器(三大商用虚拟机之一的JRockit是个例外,它内部没有解释器,因此会有启动相应时间长之类的缺点,但它主要是面向服务端的应用&
这篇关于《深入理解Java虚拟机》:HotSpot虚拟机内的即时编译器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!