`

《深入理解Java虚拟机》笔记之第11章 晚期(运行期)优化

阅读更多

1、运行期

       虚拟机会把“热点代码”编译成与本地平台相关的机器码,并进行各种层次的优化,完成这个任务的编译器称为即时编译器(Just In Time CompilerJIT)

所谓“热点代码”,是指:(1)被多次调用的方法;(2)被多次执行的循环体(依然会以整个方法为编译对象)。

由于HotSpot虚拟机使用基于计数器的热点探测方法,存在热度衰减(Counter Decay)和半衰周期。只要系统运行时间足够长,绝大部分方法都会被编译成本地代码。

 

2、解释器与编译器

HotSpot虚拟机同时包含解释器和编译器。事实上,HotSpot内置了两个即时编译器:Client CompilerServer Compiler。后者几乎能达到GNU C++编译器使用-O2参数时人优化强度。

 

3、常用的优化手段

      1)语言无关的经典优化技术之一:公共子表达式消除;

      2)语言相关的经典优化技术之一:数组范围检查消除;

      3)最重要的优化技术之一:方法内联;

      4)最前沿的优化技术之一:逃逸分析。

当一个对象在方法里面被定义后,它可能被外部方法所引用。例如作为调用参数传递到其他方法中,这种行为称为方法逃逸;甚至还有可能被外部线程访问到,譬如赋值给类变量或可以在其他线程中访问的实例变量,这种行为称为线程逃逸。(P310

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics