What's new in version 0.41.0
The following new features and notable changes since version 0.40.0 are included in this release:
- New binaries and changes to supported environments
-XX:+CompactStringsoption enabled by default
- Change in behavior of
- Support for OpenSSL 3.x
- Performance improvement
- Support added for the
- Change in behavior of the
-Djava.security.managersystem property for OpenJDK version 8 and 11
- JITServer support for Linux on AArch64
Features and changes
Binaries and supported environments
Eclipse OpenJ9™ release 0.41.0 supports OpenJDK 8, 11, and 17.
To learn more about support for OpenJ9 releases, including OpenJDK levels and platform support, see Supported environments.
-XX:[+|-]ShowCarrierFrames option added
A VM maintains multiple platform threads that are used as carrier threads to run the virtual threads. Although the virtual thread runs on a carrier thread, the stack trace of the virtual thread and its carrier thread are separate. You can use the
-XX:+ShowCarrierFrames option to add the stack trace of the carrier thread in addition to the virtual thread stack trace to the
Throwable.getStackTrace() method, if an exception occurs.
For more information, see
-XX:ContinuationCache option added
When a virtual thread is created, it is associated with a continuation, which holds the target task of the virtual thread. The VM saves the current thread state in an internal data structure that is linked with the continuation and allocates the memory for that structure. The VM stores the internal data structure in a continuation cache. New continuations can reuse the cached structure instead of allocating new memory for it.
You can optimize the virtual thread performance by tuning the continuation tier 1 and 2 cache size with the
-XX:+CompactStrings option enabled by default
Like HotSpot, the
-XX:+CompactStrings option is now enabled by default on Java™ 11 and later. In the earlier versions, this option is disabled by default.
For more information, see
Change in behavior of
In the earlier releases, if the
-Xshareclasses:readonly option and the JITServer AOT cache feature were both enabled at the same time at a JITServer client, the client could not use the JITServer AOT cache because the cache for storing data that the JITServer AOT cache needed was read-only.
Now, with the change in behavior of the
-Xshareclasses:readonly option, the shared classes cache startup creates a temporary new (writable) top layer that the JITServer AOT cache can use to store data that it needs to function.
-XX:[+|-]EnableDynamicAgentLoading option added
This option enables or disables the dynamic loading of agents into a running VM. The
-XX:+EnableDynamicAgentLoading option is the default setting.
For Java 21 and later, warnings are issued when the agents are loaded dynamically into a running VM after startup without specifying the
-XX:+EnableDynamicAgentLoading option and the same agents were not loaded before.
For more information, see
-XX:[+|-]UseZlibNX option added
AIX® system adds the
zlibnx library directory path in the
LIBPATH environment variable by default, if it is available in the system. You can control the loading of the
zlibnx library by using the
Support for OpenSSL 3.x
OpenSSL 3.x is now supported on all operating systems. For more information about OpenSSL support, see
Performance of algorithms with the use of OpenSSL version 3 and later is now enhanced. Improved algorithms include SHA256, AES, HmacSHA256, and ChaCha20. To obtain these improved algorithms and further enhance the performance of these algorithms on Linux® and AIX, use OpenSSL 3.0.12 or a later 3.0.x version, or 3.1.4 or a later 3.1.x version.
Support added for the
With this release, the OpenJ9 VM implementation supports thread memory allocation measurement (
com.sun.management.ThreadMXBean.getThreadAllocatedBytes() API). The
isThreadAllocatedMemorySupported() method now returns true instead of false. The
isThreadAllocatedMemoryEnabled() methods do not throw the "UnsupportedOperationException" error now and are enabled by default.
Support for the
com.sun.management.ThreadMXBean.getThreadAllocatedBytes() API is not added on z/OS® platforms in this release. In the coming future z/OS release, the support for this API will be added on z/OS platforms as well.
Change in behavior of the
-Djava.security.manager system property for OpenJDK version 8 and 11
From OpenJDK version 18 onwards, if you enable the
SecurityManager at runtime by calling the
System.setSecurityManager() API, you must set the
-Djava.security.manager=allow option. To disable the
SecurityManager, you must specify the
-Djava.security.manager=disallow option. If an application is designed to run on multiple OpenJDK versions, the same command line might be used across multiple versions. Because of this use of the same command line across multiple versions, in OpenJDK versions before version 18, the runtime attempts to load a
SecurityManager with the class name
disallow resulted in an error and the application was not starting.
To resolve this issue, OpenJDK version 17 ignores these options. With this release, OpenJDK versions 8 and 11 also ignore the
disallow keywords, if specified.
JITServer support for Linux on AArch64
JITServer technology is now a fully supported feature on Linux on AArch64 systems. For more information, see JITServer technology.
Known problems and full release information
To see known problems and a complete list of changes between Eclipse OpenJ9 v0.40.0 and v0.41.0 releases, see the Release notes.