1:Hotspot虚拟机内的即时编译器
1.1:解释器与编译器
当程序需要快速启动和执行的时候,解释器可以首先发挥作用,省去编译的时间,立即执行;在程序运行后,随着时间的推移,编译器发挥着作用,把越来越多的代码编译成本地代码之后,可以获得更高的执行效率。
Hotspot编译器有两个即时编译器,分别称为Client Compiler和Server Compiler,或者简称为C1和C2编译器。-Xint参数强制虚拟机运行于解释模式;- Xcomp参数强制虚拟机运行于编译模式。
1.2:编译对象和出发条件
热点探测:判断一段代码是否是热点代码,是不是需要触发即时编译。
- 基于采样的热点探测
- 基于计数器的热点探测
1.3:编译过程
1.4:查看及即时分析时的编译结果
2:编译优化技术
具有代表性的优化技术:
- 语言无关的经典优化技术:公共子表达式消除
- 语言相关的经典优化技术:数组范围检查消除
- 最总要的优化技术之一:方法内联
- 最前沿的优化技术之一:逃逸分析