- client 模式使用C1编译器,有较快的启动速度,简单地将字节码编译为机器码。
- server 模式使用C2编译器,比C1编译器的性能更高,提供了内联优化、循环展开、DeadCode删除、分支预测等优化功能。
- JDK8以上的版本默认开启了分层编译(-XX:+TieredCompilation)模式,默认开启client以获得较快的启动速度,程序运行起来后,采用C2编译器
- 默认运行1万次的代码会被JIT作为任务放到一个优化的队列进行异步优化。
- 使用`-XX:+PrintCompilation`打印JIT日志
。
----
下面的例子将展示通过JIT日志展示JIT优化热点代码(开启了分层编译后)的过程。
![](https://img.kancloud.cn/bc/bf/bcbf24f8899abb7637f8d2852bba16f4_486x374.png)
通过本例将对JIT日志有个初步的了解,
是后续查看内联调用的基础。
![](https://img.kancloud.cn/22/67/22676933c7e83215c4a6d24171ff5113_1280x801.png)
![](https://img.kancloud.cn/d5/8e/d58ee8bbd60b1dccff2ea5d5821bd786_756x484.png)
![](https://img.kancloud.cn/31/5e/315e7010418eb6cae7054dec354b795f_1033x642.png)
![](https://img.kancloud.cn/49/93/49934f49d28fa9ae691ac930f4a1e4dc_788x484.png)