写点什么

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

评论

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

贾斯特里尼&布鲁克斯,葡萄酒中的天花板

联营汇聚

【观看直播有礼】第三届云原生实战峰会正式官宣启动

阿里巴巴云原生

阿里云 云原生 实战峰会

新项目为什么决定用 JDK 17了

古时的风筝

Java JVM jdk17

ZBC成功上线PancakeSwap的糖浆池,并有望在不久上线Binance

小哈区块

分支路径图调度框架在 vivo 效果广告业务的落地实践

vivo互联网技术

图调度 效果广告 分支路径

前端必会面试题总结

loveX001

JavaScript

前端关于面试你可能需要收集的面试题

loveX001

JavaScript

实用指南:手把手搭建坚若磐石的DevSecOps框架

SEAL安全

DevSecOps 12 月 PK 榜 DevSecOps框架 实用指南

如何实现移除控件?

Towify

编辑器 无代码 无代码微信小程序

如何使用Towify在微信小程序中配置输入必填报错?

Towify

小程序 微信小程序 无代码 无代码微信小程序

低碳机关先行,昆明引领分布式光伏新变革

极客天地

先到先学!阿里新产Spring全家桶核心笔记,底层源码+应用全覆盖

程序员小毕

spring 源码 后端 架构师 java面试

Java7提供的Fork/Join框架实现高并发程序,你会使用吗

华为云开发者联盟

高并发 开发 华为云 12 月 PK 榜

手把手教你一套完善且高效的k8s离线部署方案

京东科技开发者

Docker k8s ansible ulimit 云计算,

好酒要有好工艺,贾斯特里尼&布鲁克斯,用心酿造每一滴酒

联营汇聚

数据可视化图表系列解析——折线图

Data 探险实验室

数据分析 可视化 数据可视化 可视化数据 折线图与饼图

分布式注册服务中心etcd在云原生引擎中的实践

京东科技开发者

分布式 云原生 etcd 集群 go语言

【论文推荐】TDSC2022 安全补丁识别最新的方案E-SPI

华为云开发者联盟

后端 开发 华为云 12 月 PK 榜

前端刷完这12道滑动窗口,就可以出山面试了

js2030code

JavaScript LeetCode

陈世佳酿贾斯特里尼&布鲁克斯,优质葡萄酒连储藏都有秘诀

联营汇聚

软件测试 | 测试开发 | 一文搞定 Postman 接口自动化测试

测吧(北京)科技有限公司

从输入URL到渲染的完整过程

loveX001

JavaScript

从URL输入到页面展现到底发生什么?

loveX001

JavaScript

一文梳理HTTP、TCP、Socket和WebSocket的区别和联系

No Silver Bullet

TCP 网络协议 HTTP websocket 12月月更

区块链+物联网,如何解决农产品溯源之痛?

旺链科技

区块链 物联网 产业区块链 农产品 12 月 PK 榜

vivo 推荐业务 x DeepRec:全链路优化实践

阿里云大数据AI技术

人工智能 gpu 推荐引擎 12 月 PK 榜

前端工程师leetcode算法面试必备-二分搜索算法(上)

js2030code

JavaScript LeetCode

用javascript分类刷leetcode3.动态规划(图文视频讲解)

js2030code

JavaScript LeetCode

HummerRisk V0.7.0:支持京东云、webhook、PDF下载等

HummerCloud

云安全 云原生安全

跨平台应用开发进阶(二十八) :资源加载速度优化解决方案

No Silver Bullet

跨平台 12月月更 资源加载优化

跨平台应用开发进阶(二十九) :uni-app 实现Android原生APP-云打包集成神策详细教程

No Silver Bullet

uni-app android 跨平台应用 云打包 12月月更

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