写点什么

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

评论

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

java培训:SpringBoot高频面试考点分享

@零度

JAVA开发 springboot

Gitlab-ci 替代 webhook 触发Jenkins job

网易云信

gitlab

喜讯!openGauss社区入选2021年 “科创中国”榜单

N个技巧,编写更高效 Dockerfile|云效工程师指北

阿里云云效

阿里云 云原生 Dockerfile 部署与维护 构建工具

【IT运维】多台海外主机运维用什么工具好?

行云管家

服务器 IT运维 服务器运维 海外主机

JavaScript深入理解之闭包

锋享前端

如何进行数据挖掘?

郑州埃文科技

数据挖掘 数据库

打造优质的车联网体验,仍需注意数据安全保护

FinClip

WebRTC 简单入门

ZEGO即构

WebRTC 动手实践 音视频开发 即构科技

云计算及国内主流云厂商概述

穿过生命散发芬芳

3月月更

浏览器工作原理和V8引擎

CRMEB

【ELT.ZIP】OpenHarmony啃论文俱乐部——多维探秘通用无损压缩

ELT.ZIP

OpenHarmony 压缩算法

Go HTTP Server 基于OpenTelemetry 使用Jaeger - 代码实操

非晓为骁

Go Docker Trace Jaeger OpenTelemetry

向工程腐化开炮 | Java代码治理

阿里巴巴终端技术

Java android JVM 代码治理

hexo+github搭建个人博客前期部署工作

静Yu

Hexo

web前端培训:react高频面试题分享

@零度

前端开发 React

大数据培训:Hadoop和MPP有什么区别

@零度

hadoop MPP 大数据开发

数字化时代下,智能运维全栈监控解决方案及案例盘点

云智慧AIOps社区

运维 解决方案 场景应用 自动化运维 运维安全

如何使用OKR管理团队?

优秀

实用机器学习笔记二十五:超参数优化

打工人!

学习笔记 超参数调优 机器学习算法 3月月更

TiDB 可观测性方案落地探索 | “我们这么菜评委不会生气吧”团队访谈

PingCAP

【直播回顾】OpenHarmony知识赋能第四期直播——标准系统HDF开发

OpenHarmony开发者

直播 HDF OpenHarmony

Jaeger docker部署实操

非晓为骁

Docker Jaeger Go 语言 http client

小白入门HarmonyOS Connect设备开发的“芯”路历程

HarmonyOS开发者

芯片 HarmonyOS 设备

中国AI的下一站:从两会高地奔涌向产业河谷

脑极体

低代码实现探索(三十七)业务的流程,开发的框架

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

【51单片机】室友用一把王者时间,学会了去使用数码管

謓泽

3月月更

企业知识管理的目标是什么?

小炮

移动域全链路可观测架构和关键技术

阿里巴巴终端技术

架构 App 移动端 体验优化

三级等保是最高的吗?有什么用?

行云管家

网络安全 等保 等保2.0

ICASSP 2022 | 前沿音视频成果分享:基于可变形卷积的压缩视频质量增强网络

阿里云CloudImagine

阿里云 计算机视觉 音视频 视频编码 视频云

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