介绍alijdk辅助工具JITWarmup

JVM启动初期性能未达最优,通过采用JITWarmup工具记录并预热常用方法,显著降低启动阶段CPU负载,减少服务启动时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JVM在应用启动的时候因为没有jit的充分参与,性能没有达到最优状态,同时在这个过程中要不断重新编译,优化。占用非工作线程以外的大量资源,会使在

启动阶段load骤然升高,很多时候我们会采用分层编译来解决。但是分层编译启用后,c1的cacheocde会占用大量的空间,又会引发jvm崩溃的问题。(http://bugs.java.com/bugdatabase/view_bug.do?bug_id=8006952)

现在alijdk有了一个辅助工具JITWarmup,使用它可以记录上一次(最好是beta发布)运行时被编译的方法名字,类初始化顺序,执行次数等信息,在下次

启动(正式发布)的时候,读取这些信息,然后JIT对应的方法。



图上(1)是启动初期,应用并没有提供服务的时候,也就是jvm启动时并没结束,所以这个高峰并不影响服务(启动时间可能延长了)。但是在后面,蓝线是原来启动时cpu的load,一直居高70s左右,红线是使用JITWarmup后cpu居高情况,很快就下来了。效果还是非常明显的。