50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

Project Leyden 早期访问版本开放下载:Java 程序启动速度提升 2 至 3 倍

  • 2024-07-26
    北京
  • 本文字数:1403 字

    阅读完需:约 5 分钟

Project Leyden 早期访问版本开放下载:Java 程序启动速度提升 2 至 3 倍

OpenJDK 迎来一个重要的里程碑,宣布 Project Leyden 早期访问(EA)构建版本已开放下载。这一版本凝聚了一年多的精心开发,旨在提高 Java 应用程序的性能,特别是缩短启动时间。初步的测试结果令人振奋,一些流行的应用程序框架在启动速度上实现了 2 至 3 倍的提升。


Leyden EA 构建带来了一些创新特性,通过将工作负载从运行时转移到早期实验执行阶段,即所谓的训练执行,来优化 Java 应用程序。在训练执行期间,系统会根据应用程序的行为预计算各种信息,包括将字节码预先编译为本地代码。


统一缓存数据存储(Unified Cache Data Store,CDS)归档作为其他特性的基础,使得 CDS 能够存储类元数据、堆对象、分析数据和编译代码。用户可以通过使用 -XX:CacheDataStore 标志来访问,简化了 CDS 归档的创建和测试过程。


CDS 归档中已加载的类特性(通过 -XX:+PreloadSharedClasses 标志来启用)允许类在应用程序启动时立即预加载成已加载状态。这有助于实现各种时间转移优化,使启动过程更快。


CDS 归档中的方法分析特性将训练执行中的方法分析存储在 CDS 归档中,为即时编译器(JIT)在热身阶段更早开始编译提供了依据。这使得 Java 应用程序能够更快地达到峰值性能。这个特性可以通过 -XX:+RecordTraining 和 -XX:+ReplayTraining 标志来启用。


提前编译(AOT)解析常量池特性会在训练执行期间解析许多常量池条目,这一动作将显著提高启动速度,并使 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 EA 构建版本显著提升了 Java 应用程序的优化水平,尤其是在启动时间方面。开发者们可以预期,诸如 AOT 编译、统一 CDS 归档以及存档方法分析等功能将带来显著的性能飞跃。社区的持续参与对于这些特性的完善至关重要,他们将确保这些功能能够成功融入未来的 Java 版本中。


社区的持续反馈对于进一步改进 Leyden EA 构建至关重要,开发者可以积极体验 Leyden EA 构建版本,并向 leyden-dev@openjdk.org 发送电子邮件分享使用体验。


对于希望探索 Leyden 特性并深入了解项目开发详情的开发者,可以参考发布说明 ,获取详细信息和使用 Leyden EA 构建的说明。


Java 开发人员可以通过持续关注设计笔记、演讲和官方代码库等资源,充分利用这些优化措施来提高他们应用程序的性能和效率。正如 InfoQ 先前报道的那样,Project Leyden 一直在应对各种挑战,包括提前编译的延迟问题,而这次发布旨在解决这些问题。


原文链接:

https://www.infoq.com/news/2024/07/project-leyden-ea-release/

2024-07-26 09:428106

评论

发布
暂无评论
发现更多内容

阿里资深技术专家崮德:如何成就更好的自己

阿里巴巴中间件

pdf.js使用小结

空城机

大前端 4月日更 pdf.js

Spring Boot 2.0 实现优雅停机

U2647

Spring Boot 4月日更

如何做好前馈管理?

石云升

28天写作 职场经验 管理经验 4月日更

Properties类使用需要注意的坑

风翱

properties 4月日更

企业架构设计方法TOGAF介绍

joinM

企业架构 技术架构 业务架构 TOGAF 技术与业务

灰度发布系统架构设计

xcbeyond

微服务 灰度发布 4月日更

双非渣硕!四面阿里收到offer后,才发现学长给的面试笔记有多强大

Java 编程 程序员 面试 计算机

Spring Boot 两行代码轻松实现国际化

Java架构师迁哥

HBase HA 分布式部署

Fong

大数据 运维 HBase hadoop3

如何从零开始学Python:(4)如何处理列表数据?

广之巅

Python 4月日更

不忘初心,砥砺前行|暨InfoQ写作平台一周年

程序员架构进阶

28天写作 4月日更 1 周年盛典 我和写作平台的故事 InfoQ 写作平台 1 周年

MySQL 表列数和行大小有哪些限制?

李尚智

MySQL 运维

python内置数据结构list、set、dict、tuple(一)

若尘

List 数据结构 set 字典 Python编程

【采访融云CTO杨攀:2021如何让融云迈向更高舞台】(采访)

码界西柚

融云 杨攀

重读《重构2》- 以对象取代基本类型

顿晓

重构 4月日更

我是如何开始写作的

happlyfox

个人成长 4月日更 1 周年盛典

Android Crash监控方式

Darren

监控 异常检测 Android开发 NativeCrash

DBA 行业是否将会消亡?

BinTools图尔兹

运维 dba 数据库管理工具

联盟链技术

360技术

用户故事是垂直的切片(译)

Bruce Talk

敏捷 译文 Agile User Story

用户故事拆分招数全景图(译)

Bruce Talk

敏捷 译文 Agile User Story

《采访阿里“守护神”吴翰清:安全攻防-采访提纲》

Geek_6370d5

⼤规模短⽂本聚类的设计和实践

百度Geek说

聚类 query 内聚

混合云安全简史

龙归科技

混合云

今年我读了四个开源项目的源码,来分享下心得

yes

源码

翻译:《实用的Python编程》TheEnd

codists

Python

禁止算法识别性别,能消解歧视吗?

脑极体

toB SaaS会成为苏州下⼀个“⼀号产业”么?

龙归科技

数字化 tob

全网最强的权限系统设计攻略:京东北极星商业系统权限管控实践

学Java关注我

Java 编程 程序员 架构 技术宅

第一课作业纠正

杰语

Project Leyden 早期访问版本开放下载:Java 程序启动速度提升 2 至 3 倍_编程语言_A N M Bazlur Rahman_InfoQ精选文章