openj9性能提升方面
openj9的性能关注点主要有以下几点:
- start-up time :进程启动时间
- footprint :进程内存占用
- ramp-up :达到最佳性能的速度的优化
- response time :响应时间
- CPU :CPU占用
进程启动时间的优化
启动时间就是程序从启动到可以对外提供服务的时间的消耗,这个指标对开发,测试和运维都有很大的意义,启动时间一般来说消耗在两个方面:类的加载和字节码的解释执行上,而openJ9在这个方面引入了如下的三个技术:
- Shared Class Cache
- AOT(Ahead-of-time JIT)
- -Xquickstart启动模式
Shared Class Cache 采用的方式是将被的jvm已经处理过了的类,AOT产生被编译过的代码和Interpreter的profile数据保存在操作系统文件中,然后通过Memory mapped file的方式被别的后面启动的jvm所共享,这样可以减少后续jvm进程的启动时间,在jvm启动参数中加入 –Xshareclasses ,此功能就会被启用
JVM通常在程序执行时,会通过JIT将Java方法编译为本机代码,每次程序运行时都会生成本机代码,而Ahead of Time编译技术在编译Java方法,创建本地代码时产生的代码不仅可用于当前JVM,还可存储到共享类缓存中,使用共享类缓存启动的另一个JVM可以使用存储在缓存中的AOT代码来减少启动时间,该共享类缓存在以前的Java程序调用期间填充了AOT代码。通过节省编译所需的时间和通过将方法更快地执行为AOT代码来实现这种减少。 AOT代码是本地代码,通常执行速度比解释代码快,而此功能必须在启动了Shared Class Cache 后才能生效
而- -Xquickstart启动模式相当于Hotspot的client模式,在JIT方面的优化将不是特别的充分和理想,适合于特别关注启动时间,短生命周期和人机交互类的程序使用
网友评论