Blog chevron_right Java

OpenJDK 的 Azul Zing 构建版本 25.02 包含的变更

OpenJDK 的 Azul Zing 构建版本 (Zing) 是 Azul Platform Prime (Prime) 中优化的 Java 运行时,现已发布 25.02 稳定版。Zing 构建版本提供两个版本:

  • Stream 构建版本:快速发布的月度版本(每月底推出),包含补丁集更新 (PSU) 版本中的最新功能和变更。这些版本免费用于开发和评估。在生产环境中使用 Stream 构建版本需要有效订阅。其版本号基于年份和月份。例如,“25.01.0.0”代表 2025 年 1 月的 Stream 构建版本。
  • 稳定构建版本:仅包含关键补丁更新 (CPU)、PSU 和 Azul Zing 关键修复的构建版本,不包含 Stream 构建版本中的新功能和非关键增强功能。稳定构建版本是我们向客户提供时效性错误修复的主要工具,仅供 Azul 客户使用。它们的版本号基于其所属的 Stream 构建版本。例如,“23.08.500.0”源自 2023 年 8 月的 Stream 构建版本,但已经包含多个更新,正如数字 500 所示。

由于 Stream 构建版本按照固定时间表发布,所有变更都包含在发布说明中。每年两次(2 月和 8 月),Stream 构建版本会成为新的稳定构建版本,提供包含更多改进的新版本。本文概述了自 24.08 以来,25.02 稳定版中包含的所有改进。

安全修复

此版本包含 2024 年 10 月和 2025 年 1 月发布的 CPU 和 PSU 版本安全修复。

OpenJDK 23

JDK 23 的正式发布 (GA) 版本已包含在 25.01 中。

OpenJDK 23 是一个中期支持 (MTS) 版本。这一新的 OpenJDK 版本包含数千个基于 Java 21 的常规错误和性能修复,以及三项新功能。您可以查看社区播客,以了解有关 OpenJDK 23 和 OpenJDK 项目演进历程的更多信息。

常规改进

  • Zing 将支持的最大代码缓存从 1,758 MB 提升至 4 GB。现在,您可以将 -XX:ReservedCodeCacheSize=<value in bytes> 和 -XX:InitialCodeCacheSize=<value in bytes> 的值设置为最大 4 GB。
  • Zing 附带的 libstdc++ 版本已从 libstdc++.so.6.0.24 升级至 libstdc++.so.6.0.32。
  • 多层级实现已得到改进,进一步缩短了预热时间。有关多层级的更多信息,请参阅我们的文档
  • 现在,当您的系统中安装了多个 Java 版本时,您可以使用命令 update-alternatives 在 Zing 版本之间切换。有关更多信息,请参阅在 APT 系统上开始使用 Azul Platform Prime > 在 Zing 安装之间切换

垃圾收集器

  • Zing 24.10.0.0 在外部监控工具中改进了 GC 暂停时间报告,使其更加准确。此前,一些商业 Java 应用程序性能监控工具报告的 GC 暂停时间过长,这是因为 Zing 将非暂停并发 GC 持续时间错误地报告为基于 JVMTI 事件 JVMTI_EVENT_GARBAGE_COLLECTION_START 和 JVMTI_EVENT_GARBAGE_COLLECTION_FINISH 的 GC 暂停时间。
    如果使用 JVMTI 且通过 -javaagent 连接的监控软件处于活动状态,则新的正确报告可能会使实际的 GC 暂停时间略有增加。
  • Zing 25.02.0.0 实现了一项新的优化,通过消除 GC 未运行时垃圾收集器 (GC) 屏障指令的开销来提高 JVM 应用程序的吞吐量。此优化会增加 GC 运行时 GC CPU 的使用率,因此它最适合 GC 时间百分比已经较低的情况。
    此模式默认禁用,可以通过指定命令行选项 -XX:GPGCLvbCodeVersioningMode=<value> 来启用。您可以在命令行选项文档中找到有关此选项的更多信息,还可以在 C4 垃圾收集器文档中找到有关混合模式和 LVB 代码版本的更多信息。

编译器

  • C1 分析的执行方式已更改,以在大多数情况下改善预热效果。通过此更改,对于已分配分析的 ReadyNow 匹配编译,C1 类型分析将被禁用,从而减少预热期间的编译器开销。

命令行选项变更

  • 如果您需要禁用扩展本机内存跟踪 (NMT),Zing 24.09.0.0 引入了新的命令行选项 -XX:[+/-]UseExtendedNMT,用于启用或禁用 Zing 的扩展 NMT;以及 -XX:[+/-]EnableNMTIntegrityChecks,用于启用或禁用分配检查。Zing 以扩展 NMT 模式运行,并默认包含完整性检查。使用 -XX:[+/-]UseExtendedNMT 可指示 Zing 以类似 Zulu 的模式运行 NMT。除特殊情况外,我们不建议禁用扩展 NMT。
  • 之前实现的命令行选项 -XX:[+/-]OptimizeIdentityHashForDistribution 现已默认启用。此选项可优化身份哈希代码的分配。启用此选项可优化哈希代码分配协议。否则,某些哈希表实现容易出现不合理的冲突。
  • 新的命令行选项 -XX:+UseTaggedAddressForJavaHeap 为现代 ARM64 系统启用了“Java 堆的标记地址”功能。此功能在非 ZST 模式下运行 Zing 时,可提供更佳的预置性能和改进的内存报告。
    GC 日志的标题中包含一个新行 Use address tag bits,用于指示此功能处于启用还是禁用状态。此功能兼容使用 ARMv8 或更高系统架构以及 Linux 内核 5.4 或更高版本的系统。此功能默认处于禁用状态。
  • 新的命令行选项 -XX:+UseUnifiedCompilerFrontend 允许 CNC 和 Falcon 共享同一前端,从而直接在虚拟机中启用 CNC UnifiedCompiler。此选项默认处于禁用状态。
  • 新的命令行选项 -XX:CNCLocalFallbackOptLevelLimit=<3,2,1,0> 可用于定义本地反馈的 OptLevel。请参阅 Optimizer Hub 文档中的云原生编译器 JVM 选项。 Prime 文档中 Falcon 编译器选项中的 Zing 命令行选项 XX:FalconOptimizationLevel=<3,2,1,0> 进一步解释了此选项中使用的值。

结语

这一新的 OpenJDK 的 Azul Zing 构建版本 25.02 稳定版包含许多更改和改进,并包含所有最新的安全修复。

prime-cta-banner

 More Zing

Learn about all the changes in Azul Zing Builds of OpenJDK