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

OpenJDK HotSpot 或将在 Java 9 带来预先编译技术(AOT)

  • 2016-10-10
  • 本文字数:1647 字

    阅读完需:约 5 分钟

在“什么是即时编译(JIT)!?OpenJDK HotSpot VM 剖析”这篇文章里,作者提到HotSpot 执行引擎有一个即时(JIT)编译器。为了优化启动时间,分层编译先对代码进行解释,然后把它们快速移动到第1 层,第2 层和第3 层,在这些层里使用客户端编译级别对它们进行编译(使用不同的剖析信息),最后把它们移动到服务端编译级别的层(更多信息可以参考上面的文章)。尽管有编译阶段的优化,HotSpot 仍然会先解释执行字节码,然后才会使用即时编译。

今年9 月,一个关于在HotSpot 里添加预先编译(Ahead-of-Time,AOT)的提案被提交到JEP。AOT 通过加载预编译的类来优化启动时间,避免了在解释模式或局部优化编译级别运行这些类。

AOT 并非新出现的动态编译器技术。 IBM 的 J9 虚拟机就支持 AOT Excelsior JET 和其它一些虚拟机也支持。AOT 使用(共享)已经编译成本地代码的库让动态编译器达到更好的启动 / 预热效果。

跟 JIT 编译器类似,AOT 编译也有分层和非分层两种模式,不同之处在于剖析信息和 JIT 再编译。那篇文章提到,在分层模式下,编译第2 层会收集简单的剖析信息,AOT 分层编译的代码也是如此。当AOT 调用达到一定阈值,这些方法会在第3 层被客户端编译器编译,这也为将在第4 层发生的服务端再编译收集了全部剖析信息。

该提案由HotSpot 团队负责人Valdimir Kozlov 提交,里面提到了在第一个版本里只有java.base 模块支持多层AOT,因为这个基本模块为众人所知,可以得到全面的内部测试。

AOT 带来了一个叫作“jaotc”的工具,它在内部使用了 Graal (用于生成代码)。Graal 动态编译器集成了 HotSpot 虚拟机并且依赖 JVM 编译器接口(JVMCI),所以 JDK(支持 Graal 或 AOT)应该也支持 JVMCI。 Oracle technetwork 网站上就有一些支持 JVMCI 的 JDK 版本。

根据提案的描述,jaotc 工具支持以下这些标记:

复制代码
--module <name> Module to compile
--output <file> Output file name
--compile-commands <file> Name of file with compile commands
--compile-for-tiered Generated profiling code for tiered compilation
--classpath <path> Specify where to find user class files
--threads <number> Number of compilation threads to be used
--ignore-errors Ignores all exceptions thrown during class loading
--exit-on-error Exit on compilation errors
--info Print information during compilation
--verbose Print verbose information
--debug Print debug information
--help Print this usage message
--version Version information
-J<flag> Pass <flag> directly to the runtime system
</flag></flag></number></path></file></file></name>

产品级的 JVM 有如下标记:

复制代码
+/-UseAOT - Use AOT-compiled files
+/-PrintAOT - Print used AOT klasses and methods
AOTLibrary=<file> - Specify the AOT library file
</file>

一些非产品级或用于开发的标记对用户也是可用的:

复制代码
PrintAOTStatistics - Print AOT statistics
UseAOTStrictLoading - Exit the VM if any of the AOT libraries has invalid config

提案同时提到,AOT 的运行时事件日志将集成统一 GC 日志,并支持如下标签:

复制代码
aotclassfingerprint
aotclassload
aotclassresolve

不列出风险或没有基本假定的提案是不完整的,AOT 也不例外。AOT 提案的风险标注如下:

预编译的代码可能不是最优的,所以会导致性能损失。性能测试结果表明,有些应用程序会从 AOT 编译的代码中获益,不过有些却出现明显的性能衰退。因为 AOT 特性是可选的,所以应用程序出现的性能衰退是可以避免的。如果用户发现应用程序启动变慢,或者达不到预期的性能峰值,那么可以重新构建一个不包含 AOT 库的 JDK。

查看英文原文: Ahead-of-Time (AOT) Compilation May Come to OpenJDK HotSpot in Java 9


感谢夏雪对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-10-10 19:005377
用户头像

发布了 322 篇内容, 共 156.7 次阅读, 收获喜欢 148 次。

关注

评论

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

JVM内存结构33连问

量贩潮汐·WholesaleTide

JVM

2025年含泪狂刷Android基础面试118题,offer拿到手软

程序员每日分享

程序员 面试 移动开发 Android开发 互联网大厂

向量删除的3种方式

DashVector

人工智能 数据库 大模型

更强模型效果!豆包大模型 1.6 系列上线边缘大模型网关,最高申领1000万免费 Tokens

火山引擎边缘云

AI+ 端侧AI 大模型 侧端大模型

从电脑到座舱:英特尔携AI科技杀入智能汽车主战场

科技热闻

基于Casbin的ABAC授权模型设计与开发踩坑实录

天翼云开发者社区

安全 权限管理 访问控制

面临秋招!卷S人的Java中高级核心知识全面解析面试手册,涨薪跳槽拿高薪靠它了!

程序员高级码农

Java 程序员‘

编程助手怎么选?我都要!左手通义灵码,右手 Cursor,组合来用超级爽

阿里云云效

阿里云 通义灵码

原点安全入选Gartner®“数据安全平台”中国市场指南代表厂商

原点安全

微信读书十周年,后台架构的技术演进和实践总结

JackJiang

网络编程 即时通讯 IM

编程助手怎么选?我都要!左手通义灵码,右手 Cursor,组合来用超级爽

阿里巴巴云原生

阿里云 通义灵码

博大数据精彩亮相2025中国国际金融展,全栈解决方案赋能金融数字化升级

极客天地

YMatrix 技术内幕:详解 10w+ TPS 背后的技术矩阵

YMatrix 超融合数据库

OLTP HTAP OLTP 场景实践 YMatrix HTAP数据库

医学+AI系列第一场|聚焦北京中医药大学的产-教-研融合、以赛促学、创新驱动的人才培养实践

ModelWhale

以赛促学 北京中医药大学

爱测智能体测试平台·全新升级邀您体验

测试人

人工智能 软件测试

2025年面试通过率低?来看看一位Android大牛的BAT面试心得与经验总结

程序员每日分享

程序员 面试 移动开发 Android开发 互联网大厂

AppGallery Connect(AGC)账号与权限管理体系

小赵学鸿蒙

商务 AppGallery Connect 鸿蒙开发工具

Spring Boot 启动优化实践

不在线第一只蜗牛

Spring Boot

Java线程池详解:高效并发编程的核心利器

不在线第一只蜗牛

Java

flstudio找不到中文设置,没有语言选项怎么办?FL Studio设置中文教程,FL Studio中文版免费下载

阿拉灯神丁

编曲软件 FL Studio 水果FL Studio FL水果 音乐创作

商场商圈潜客挖掘模型

天翼云开发者社区

数据挖掘 大数据

DeepSeek-R1源码解读

AI布道Mr.Jin

电子制造智能化转型:MES如何解决工艺复杂、质量追溯与供应链协同

万界星空科技

mes 万界星空科技mes 电子电器制造业 电子电器行业 电子行业mes

等保测评费用谁出?收费依据是什么?

行云管家

等保 堡垒机 等保测评

图纸太杂乱?1秒关闭CAD图层,清爽看图!

在路上

cad cad看图 cad图纸

用DeepSeek+ Python 自动生成测试用例 狂省5小时,漏测率暴降83%!

测试人

人工智能

开源鸿蒙亮相HDC 2025 共建千行万业的数字底座

最新动态

PAI推理重磅发布模型权重服务,大幅降低冷启动与扩容时长

阿里云大数据AI技术

开源 扩容 冷启动 模型训练/测试 大型语言模型LLM

HDC 2025|在AppGallery发现精品应用

最新动态

Java 集合框架底层数据结构实现深度解析

电子尖叫食人鱼

Java 数据结构

西南会议 | 2025 Altair 区域技术交流会下周五成都,日程+演讲阵容+惊喜好礼全面公布!

Altair RapidMiner

人工智能 AI 仿真 CAE AI驱动工程

OpenJDK HotSpot或将在Java 9带来预先编译技术(AOT)_Java_Monica Beckwith_InfoQ精选文章