写点什么

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:427838

评论

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

群晖(Synology)NAS 后台安装 Docker 后配置 Mariadb / MySQL 配置端口

HoneyMoose

区块链共识,机器说了算还是人说了算?

Akumas

区块链 数字化转型 共识机制 十四五规划

两会声音|建议完善数字人民币体系 完善数字货币立法

CECBC

自己动手写Docker系列 -- 3.1构造实现run命令版本的容器

Go Docker

千万级学生管理系统的考试试卷存储方案

AragornYang

架构训练营 架构实战营

Studio One 5新版本安装包图文教程

茶色酒

Studio One 5 fl水果20.9

中国AI的“底线思维”与安全锁

脑极体

面向企业级前端应用的开发框架 UI5 的发展简史介绍

汪子熙

JavaScript 前端开发 前端框架 企业级应用 3月月更

深入理解HTML表格秘籍

喀拉峻

赋能区域产业,南京、成都双城AI开发者Meetup报名开启

百度大脑

区块链的过去与未来

CECBC

俄罗斯能通过加密货币规避制裁吗?

CECBC

重磅硬核 | 一文聊透对象在JVM中的内存布局,以及内存对齐和压缩指针的原理及应用

bin的技术小屋

JVM 内存 Java虚拟机 false sharing java

java如何对接企业微信

经典鸡翅

3月月更

千万级学生管理系统的考试试卷存储方案

「架构实战营」

工业AI落地场景案例实战,飞桨EasyDL让工业更智能

百度大脑

Mac 配置 Flutter 安卓开发环境

岛上码农

flutter ios 安卓 移动开发 3月月更

Powershell基础之脚本执行

喀拉峻

网络安全 安全 渗透测试

最好用的 6 款 Vue 拖拽组件库推荐 - 卡拉云

蒋川

Vue Vue3 vue cli

HTTP的成长

Tristan

前端 浏览器 网络 HTTP

适合新手代码审计之熊海cms

H

网络安全 代码审计

基于STM32设计的森林火灾预警系统

DS小龙哥

物联网 3月月更

群晖(Synology)NAS 安装 Mariadb 数据库启动错误

HoneyMoose

低代码实现探索(三十四)前台code逻辑

零道云-混合式低代码平台

当听障人士实现手语自由:手语AI平台的产业狂想

脑极体

安全无小事,教你解决密码泄露问题!

老陈

工具 安全 密码泄露

【C语言】轻松解决Bug

謓泽

C语言 bug 3月月更

微博评论高性能高可用计算架构

唐尤华

架构实战营

蚂蚁金服-财富编码军规

Beaver

编码规范 编码军规 蚂蚁金服-财富编码军规

百度Q4财报:百度智能云2021年营收151亿元,同比大增64%

百度大脑

群晖(Synology)NAS 后台安装 Docker 后配置 Mariadb / MySQL

HoneyMoose

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