
Azul Zing Builds of OpenJDK (Zing), the optimized Java runtime within Azul Platform Prime (Prime), has reached the release of the 25.02 Stable Release line. Zing builds are available in two versions:
- Stream Builds: Fast-moving monthly releases (end of the month) that include the latest features and changes in Patch Set Update (PSU) releases. These are free for development and evaluation. Using Stream Builds in production requires an active subscription. Their version number is based on year and month. For instance, “25.01.0.0” is the January Stream Build of 2025.
- Stable Builds: Builds that incorporate only Critical Patch Updates (CPUs), PSUs, and Azul Zing critical fixes and do not uptake new features and non-critical enhancements from Stream Builds. Stable Builds are our primary vehicle for delivering time-sensitive bug fixes to customers and are only available to Azul customers. Their version number is based on the Stream Build they originated from. For instance, “23.08.500.0” was derived from the August Stream Build of 2023 but already had multiple updates, as the 500 number indicates.
As Stream Builds happen on a fixed schedule, all changes are included in the release notes. Twice a year (in February and August), a Stream Build becomes the new Stable Build, providing a new version with many more improvements. This post gives an overview of all the combined improvements since 24.08 that are included in the 25.02 Stable Line.
Security fixes
This version includes the October 2024 and January 2025 CPU and PSU release security fixes.
OpenJDK 23
The General Availability (GA) release of JDK 23 got included in 25.01.
OpenJDK 23 is a Mid-Term Supported (MTS) release. This new OpenJDK version includes several thousand general bug and performance fixes over Java 21 and three new features. You can check out the community podcast to learn more about OpenJDK 23 and the evolution process of the OpenJDK Project.
General improvements
- Zing increases the maximum code cache supported from 1758 MB to 4 GB. You can now set both
-XX:ReservedCodeCacheSize=<value in bytes>
and-XX:InitialCodeCacheSize=<value in bytes>
to a value of up to 4 GB. - The version of
libstdc++
packaged with Zing has been upgraded fromlibstdc++.so.6.0.24
tolibstdc++.so.6.0.32
. - The Multi Tiering implementation has been improved to reduce warmup time further. For more information about Multi Tiering, see our documentation.
- You can now use the command
update-alternatives
to switch between Zing versions when you have multiple versions of Java installed on your system. For more information, see Get Started with Azul Platform Prime on APT Systems > Switching Between Zing Installations.
Garbage Collector
- Zing 24.10.0.0 brings improved and more accurate reporting of GC pause times in external monitoring tools. Previously, a few commercial Java application performance monitoring tools reported too long GC pause times because Zing was misreporting non-pausing concurrent GC durations as GC pauses over JVMTI events
JVMTI_EVENT_GARBAGE_COLLECTION_START
andJVMTI_EVENT_GARBAGE_COLLECTION_FINISH
.
The new correct reporting may slightly increase the actual GC pauses if monitoring software attached with-javaagent
using JVMTI is active. - Zing 25.02.0.0 implements a new optimization that improves the throughput of your JVM application by eliminating the cost of the Garbage Collector (GC) barrier instructions when the GC is not running. The optimization comes with the cost of increasing GC CPU usage while the GC is running, so it is best suited for cases where the GC time percentage is already low.
This mode is disabled by default and can be enabled by specifying the command line option-XX:GPGCLvbCodeVersioningMode=<value>
. You can find more information about this option in the documentation of the Command Line Options and more on Hybrid Mode and LVB Code Versioning in the C4 Garbage Collector documentation.
Compiler
- The way C1 profiling is performed has changed to improve the warmup in most cases. With this change, C1 type profiling is disabled for ReadyNow-matched compiles that already got a profile assigned, reducing compiler overhead during warmup.
Changes in Command Line Options
- In case you need to disable Extended Native Memory Tracking (NMT), Zing 24.09.0.0 introduced a new command line option
-XX:[+/-]UseExtendedNMT
, to enable or disable Zing’s Extended NMT, and-XX:[+/-]EnableNMTIntegrityChecks
, which you can use to enable or disable checks on allocations. Zing runs in Extended NMT mode and includes integrity checks by default. Using-XX:[+/-]UseExtendedNMT
tells Zing to run NMT in a Zulu-like mode. We do not recommend disabling Extended NMT except in particular cases. - The previously implemented command line option
-XX:[+/-]OptimizeIdentityHashForDistribution
is now enabled by default. This option optimizes the distribution of identity hash codes. Enabling this option optimizes the protocol for distributing hash codes. Otherwise, some hash table implementations are prone to unreasonable collisions. - The new command line option
-XX:+UseTaggedAddressForJavaHeap
enables the “tagged address for Java heap” feature for modern ARM64 systems. This feature provides better out-of-the-box performance and improved memory reporting when running Zing in non-ZST mode.
GC logs include a new line in the header,Use address tag bits
, which indicates whether this feature is enabled or disabled. This feature is compatible with systems using ARMv8 system architecture or higher and Linux kernel versions 5.4 or higher. This feature is disabled by default. - The new command line option
-XX:+UseUnifiedCompilerFrontend
allows CNC and Falcon to share the same front end, enabling the CNC UnifiedCompiler directly in the VM. This option is disabled by default. - The new command line option
-XX:CNCLocalFallbackOptLevelLimit=<3,2,1,0>
can be used to define the OptLevel for local feedback. See Cloud Native Compiler JVM Options in the Optimizer Hub documentation. The values used in this option are further explained for the Zing command line optionXX:FalconOptimizationLevel=<3,2,1,0>
in the Falcon Compiler Options in the Prime documentation.
Conclusion
This new 25.02 Stable Line of Azul Zing Builds of OpenJDK includes many changes and improvements and contains all the latest security fixes.