Project Leyden 宣布早期访问版本:Java 应用程序启动速度提升 2-3 倍

OpenJDK发布Project Leyden早期访问版本

OpenJDK宣布了Project Leyden的早期访问(EA)版本,标志着该项目的一个重要里程碑。该版本现已可供下载,代表了一年多来致力于提升Java应用程序性能的开发成果,尤其是启动时间的优化。初步测试显示,流行的应用程序框架在启动时间上实现了2-3倍的提升。

Project Leyden的核心特性

Project Leyden的EA版本引入了多项创新特性,旨在通过将工作负载从运行时转移到早期的实验性执行(称为“训练运行”)来优化Java应用程序。在这些训练运行中,预计算了多种信息,如字节码预编译为本地代码。

统一缓存数据存储(CDS)归档

统一缓存数据存储(CDS)归档是其他特性的基础。这一增强功能允许CDS存储类元数据、堆对象、性能分析数据和编译代码。通过-XX:CacheDataStore标志访问,简化了CDS归档的创建和测试。

CDS归档中的预加载类

通过-XX:+PreloadSharedClasses标志启用,允许类在应用程序启动时立即预加载到“已加载”状态,从而加快启动过程。

CDS归档中的方法配置文件

在CDS归档中存储来自训练运行的方法配置文件,使即时(JIT)编译器在预热期间更早开始编译,从而让Java应用程序更快达到峰值性能。通过-XX:+RecordTraining-XX:+ReplayTraining标志启用。

常量池条目的提前解析

在训练运行期间解析许多常量池条目,改善启动时间并支持提前(AOT)编译器生成更好的代码。通过-XX:+ArchiveFieldReferences-XX:+ArchiveMethodReferences-XX:+ArchiveInvokeDynamic标志启用。

Java方法的AOT编译

在训练运行期间识别常用方法,编译它们并将其存储在CDS归档中,使应用程序启动时立即执行本地代码。通过-XX:+StoreCachedCode-XX:+LoadCachedCode-XX:CachedCodeFile标志管理。

动态代理和反射数据的AOT生成

提前生成动态代理和反射数据,减少启动时间。通过-XX:+ArchiveDynamicProxies-XX:+ArchiveReflectionData标志启用。

类加载器查找缓存

通过缓存重复的类查找来加速启动过程,使用-XX:+ArchiveLoaderLookupCache标志访问。

开发者如何实验Leyden特性

开发者可以使用Leyden EA版本中的java程序,并通过-XX:CacheDataStore标志来实验Leyden的特性。

社区反馈与未来展望

Project Leyden的EA版本在优化Java应用程序方面取得了显著进展,特别是在启动时间上。开发者可以期待通过AOT编译、统一CDS归档和归档方法配置文件等特性带来显著的性能提升。社区的持续参与对于这些特性的进一步完善和成功集成到未来的Java版本中至关重要。

开发者被鼓励尝试Leyden EA版本,并通过电子邮件将他们的体验反馈给leyden-dev at openjdk.org。

进一步学习资源

开发者可以通过查阅发布说明了解如何使用Leyden EA版本,并通过设计笔记、演示文稿和官方仓库跟踪Project Leyden的最新进展,从而提升其应用程序的性能和效率。

此前,InfoQ曾报道Project Leyden在实现AOT编译方面遇到的挑战,此次发布旨在缓解这些问题。

阅读 27
0 条评论