JEP 544:Java 代码预编译提速

JEP 544: Ahead-of-Time Code Compilation

JEP 544 旨在通过 AOT 缓存技术,让 HotSpot 虚拟机在启动时直接加载优化后的原生代码,从而大幅缩短 Java 应用的启动和预热时间。该方案通过在训练运行中编译热点代码并存储,使得生产环境能瞬间获得峰值性能。当工作负载变化时,系统又能自动切换回 JIT 编译进行动态优化,完美兼顾了静态编译的启动速度与动态编译的灵活性。整个过程对开发者透明,无需修改代码或配置,仅需启用 AOT 缓存即可在 x64 和 AArch64 架构上实现显著的性能提升。

Java 应用将获得静态编译的部分优势,同时保留动态编译的敏捷性、可移植性和兼容性。
  1. cogman10

    Leyden 严重依赖训练运行,这点我能理解,但这套搭建成本实在太高了。

    目前缺乏现成的工具来执行这类训练运行,如果你想用上它,最终不得不在构建流程中定制一些专属方案。对于像我维护的那些复杂应用来说,这尤其棘手。

    我喜欢它能带来的效果,但不喜欢启动它所需的精力。

  2. cyberax

    Excelsior JET 在 25 年前就做到了:https://en.wikipedia.org/wiki/Excelsior_JET

    很遗憾 Sun/Oracle 从未与他们合作推出原生应用。这本来能挽救 Java 在桌面端的命运。

  3. rerdavies

    为什么不在安装时进行 AOT 编译呢?这样编译时就能利用 CPU 特定指令集?并且可以在适用的函数中放入一个用于类初始化的已编译前缀,通过修补 VTABLE 来跳过类初始化代码。

  4. treyd

    这和 Android 的 AOT 运行时在架构上有什么区别?

  5. harlan_pdx

    启动时间是主要优势,这意味着简单的训练运行就能让你获得大部分价值。只有追求峰值吞吐量时,搭建工作才会变得繁重。

同日更多故事

2026-09-10