Ohhnews

分类导航

$ cd ..
foojay原文

Azul Zing Builds of OpenJDK 26.08 版本更新内容一览

#azul zing#openjdk#java#编译流#jvm优化

Azul Zing Builds of OpenJDK 是 Azul Platform Prime 中经过优化的 Java 运行时,现已发布 26.08 Stable Release 系列。这个 Stable Build 代表着 2026 年 8 月从 Stream 状态提升为 Stable 状态,将六个月的 Stream Build 工作整合到一个受支持的发布系列中。最引人注目的新增功能是 Compilation Streaming,它让 JVM 在启动时从 Azul Optimizer Hub 下载预编译代码,而不必等待自身的 JIT 编译队列。

Zing 构建有两个版本:

  • Stream Builds:快速迭代的月度版本,包含 PSU 版本中的最新功能和变更。这些版本可免费用于开发和评估。在生产环境中使用 Stream Builds 需要有效的订阅。其版本号基于年份和月份。例如,“26.07.0.0”是 2026 年 7 月的 Stream Build。
  • Stable Builds:仅包含 CPU、PSU 和 Azul Zing 关键修复的构建,不吸收 Stream Builds 中的新功能和非关键增强。Stable Builds 是我们向客户交付时效性错误修复的主要方式,并且仅提供给 Azul 客户。

每年两次(2 月和 8 月),一个 Stream 构建会成为新的 Stable 构建,提供一个包含更多改进的新版本。26.08 Stable Build 整合了 Stream Builds 26.04 到 26.08 的所有变更。在本文中,我们将概述 26.08 Stable 系列中所有合并的改进。

Compilation Streaming

26.08 中最重要的新增功能是 Compilation Streaming,这是一种新机制,通过让 JVM 在启动时从 Optimizer Hub 下载预编译代码流,而不是等待自身的 JIT 队列,从而减少 JVM 预热时间。Compilation Streaming 需要 Optimizer Hub 26.08.0 或更高版本,并且不能与 ReadyNow Orchestrator 配置文件的 Indirect Delivery 结合使用。

命令行选项描述默认值
-XX:[+/-]CNCEnableCompilationStreaming启用编译流式传输false
-XX:CNCCompilationStreamingMaxActiveSegments=<number>内存中保留的流段数量(生产环境推荐 3-5)6
-XX:CNCCompilationStreamingStopAfterSeconds=<value>流式传输停止前的持续时间;-1 = 永不停止,0 = 立即停止600
-XX:[+/-]CNCCompilationStreamingPrintStatsAtExit在 JVM 退出时打印流安装统计信息false

在 26.08.0.0 版本中,流编译解析期间可能发生的 JVM 崩溃已在 26.08.1.0 中解决。

安全修复

此版本包含 2026 年 4 月和 7 月的 CPU 与 PSU 发布安全修复,以及 2026 年 8 月的关键安全补丁更新(CSPU)——这是 Azul Zing Builds of OpenJDK 有史以来发布的第一个 CSPU。CSPU 在季度更新发布之间提供安全性和稳定性修复,除安全修复本身外,不会引入新功能、API 变更或其他行为变更。

常规改进

  • 轻量级锁定现在包含线程局部的 monitorenter 和 monitorexit 变体,改进了 Orca 优化。
  • -XX:+UseTaggedAddressForJavaHeap 现在在 ARM64 上默认启用。当 -Xmx 超过 512 GB 时,它会自动禁用(并记录警告)。
  • -XX:+UseZlibNG 现在在 JDK 25 上可用,作为 zlib 的性能优化直接替代品。
  • 现在可以使用 -XX:+EnableMetaspacePoolMXBean 为 OpenJDK 兼容性启用 Metaspace MemoryPool MXBean。
  • ThreadOpt 已被弃用,使用时现在会记录一条警告消息。
  • 通过剥离 librpc.so 和 librpccpp.so,运行时包大小已减小。
  • 若干稳定性修复解决了非 ZST 模式配合大页时的崩溃、AsyncGetCallTrace 中的空指针问题,以及 JFR 相关问题。

Optimizer Hub、本地回退与 ReadyNow

  • 在本地回退期间以降低的优化级别编译的方法,现在一旦 Cloud Native Compiler 再次可达,就会按预期的优化级别重新编译。
  • 新选项 -XX:CNCProductivityRemoteCpuToLocalCpuEquivalenceFactor 允许你调整基于生产率的回退决策。
  • -XX:ProfileLogOutMaxNominatedGenerationCount 的默认值已从 0(无限)更改为 4。
  • -XX:+EnableRNO 和 -XX:ProfileLogName 不能再一起使用。启动现在会失败并报错,指示你改用 -XX:ProfileName。

Multi-Tiering

三个 Multi-Tiering 命令行选项已从实验性提升为产品状态:

命令行选项描述默认值
-XX:MultiTieringSamplingIntervalMS=<milliseconds>Multi-Tiering 方法的采样间隔60000
-XX:MultiTieringSamplingStartDelayMS=<milliseconds>采样开始前的延迟0
-XX:FalconMidTierOptimizationLevel=<level>用于中层编译的 Falcon 优化级别0

Multi-Tiering 默认仍处于禁用状态。你可以使用 -XX:+UseMultiTiering 启用它。

垃圾回收日志记录与 Falcon 编译器

  • -XX:GCLogPrintRecompStatistics 将重新编译统计信息记录到 GC 日志中。
  • -XX:FalconIntrinsifyFillInStackTrace0 控制是否使用 Throwable.fillInStackTrace0(int) 内建方法。
  • 已解决可能导致检查点超时的 GC 日志写锁争用问题。

命令行选项变更

新选项:

  • Compilation Streaming 系列:-XX:[+/-]CNCEnableCompilationStreaming、-XX:CNCCompilationStreamingMaxActiveSegments、-XX:CNCCompilationStreamingStopAfterSeconds、-XX:[+/-]CNCCompilationStreamingPrintStatsAtExit
  • -XX:CNCProductivityRemoteCpuToLocalCpuEquivalenceFactor
  • -XX:GCLogPrintRecompStatistics
  • -XX:FalconIntrinsifyFillInStackTrace0
  • -XX:+EnableMetaspacePoolMXBean

从实验性提升为产品:

  • -XX:MultiTieringSamplingIntervalMS
  • -XX:MultiTieringSamplingStartDelayMS
  • -XX:FalconMidTierOptimizationLevel

更改的默认值:

  • -XX:ProfileLogOutMaxNominatedGenerationCount:0 → 4
  • -XX:+UseTaggedAddressForJavaHeap:现在在 ARM64 上默认启用

已弃用:

  • -XX:+UseThreadOpt
  • -XX:ThreadOptOptions

不兼容组合:

  • -XX:+EnableRNO 与 -XX:ProfileLogName 组合使用(请改用 -XX:ProfileName)

26.08.1.0 中的 OpenJDK 版本

主版本OpenJDK 版本
81.8.0_504-b2
1111.0.32.1+1-LTS
1717.0.20.1+1-LTS
2121.0.12.1+1-LTS
2525.0.4.1+1-LTS

常见问题

如何减少 JVM 预热时间? 如果预热时间主要由 JIT 编译主导,可以通过 ReadyNow 解决,它会复用之前运行的性能分析数据;或者使用新的 Compilation Streaming 功能,它在启动时从 Azul Optimizer Hub 下载预编译代码并直接安装,而不是等待编译队列。Compilation Streaming 需要 Optimizer Hub 26.08.0 或更高版本。

Stream 和 Stable 版本有什么区别? Stream 版本每月发布,包含新功能。Stable 版本保持功能不变,只接受安全性和关键修复。Azul Prime 遵循这一模式:每月发布用于开发和评估的 Stream Builds,以及每年提升两次的 Stable Builds——仅向客户提供。

什么是关键安全补丁更新(CSPU)? CSPU 在季度更新发布之间提供安全性和稳定性修复。它不引入新功能、不改变 API,也不带来安全修复之外的任何行为变更。Azul 于 2026 年 8 月为 Azul Zing 发布了首个 CSPU。

Azul Prime 26.08 支持哪些 Java 版本? Azul Prime 26.08 支持 OpenJDK 8、11、17、21 和 25。运行较旧的主版本并不会让你无法使用当前运行时优化。

Multi-Tiering 有什么作用? Multi-Tiering 会在方法生命周期的早期实现快速、低级别编译,并在之后选择性地以更高级别重新编译,以少量峰值性能换取更短的预热时间。它默认仍处于禁用状态;可使用 -XX:+UseMultiTiering 启用。

结论

Azul Zing Builds of OpenJDK 的全新 26.08 Stable 系列引入了 Compilation Streaming 作为缩短 JVM 预热时间的新方式,发布了 Azul 的首个关键安全补丁更新,并带来了一长串常规、GC 和 Falcon 编译器改进——所有这些都以最新的安全修复为后盾。

[LOADING...]
作者

Matt Van Order

拥有多年为电视和新闻广播开发系统经验的 Java 开发者。Azul 高级技术文档撰写人,专注于 Azul Prime。

相关文章

Java [LOADING...]
Frank Delporte2026年8月21日 431 次浏览

Azul 2026 年 8 月发布:Java 的首个月度 CSPU

Java Java [LOADING...]
Frank Delporte2026年7月27日 1,163 次浏览

Java 新的季度间安全更新:CSPU 对你的发布流水线意味着什么

Java Java [LOADING...]
Frank Delporte2025年6月20日 3,477 次浏览

如何训练 ReadyNow 以实现最佳 Java 性能

Java 云计算 [LOADING...]
2 位作者 2024年10月18日 6,271 次浏览

Azul Zing Builds of OpenJDK 24.08 版本包含的变更

云计算## 加入讨论 Java [LOADING...]
Frank Delporte 2026年8月21日 431 次浏览

Azul 2026 年 8 月发布:Java 的首个月度 CSPU

Java Java [LOADING...]
Frank Delporte 2026年7月27日 1,163 次浏览

Java 的全新季度间安全更新:CSPU 对您的发布流水线意味着什么

Java Java [LOADING...]
Frank Delporte 2025年6月20日 3,477 次浏览

如何训练 ReadyNow 以实现最佳 Java 性能

Java 云 [LOADING...]
2 位作者 2024年10月18日 6,271 次浏览

Azul Zing Builds of OpenJDK 24.08 版本中包含的变更

云