What's new in version 0.21.0
The following new features and notable changes since version 0.20.0 are included in this release:
- New binaries and changes to supported environments
- Application Programming Interface (API) documentation
- Performance improvements
- New
-XX:[+|-]HandleSIGABRT
option added - New
-XX:[+|-]PrintFlagsFinal
option added - Update to
NoClassDefFoundError
exception message - macOS® shared libraries version updated
- Support for OpenJDK HotSpot options
Features and changes
Binaries and supported environments
Eclipse OpenJ9™ release 0.21.0 supports OpenJDK 8, 11, and 14. Binaries are available from the AdoptOpenJDK community at the following links:
To learn more about support for OpenJ9 releases, including OpenJDK levels and platform support, see Supported environments.
Application Programming Interface (API) documentation
API documentation that applies to OpenJ9 can now be found in this user documentation for both JDK 8 and JDK 11. The documentation includes links to Oracle API documentation for information that is not specific to OpenJ9. See API overview.
Performance improvements
-
If the -Xtune:virtualized command line option is used, the default JIT scratch memory limit is now reduced from 256 MB to 16 MB. This reduces the peak from JIT compilation activity, allowing you to size containers more easily, based on the particular application's memory usage.
-
If the JIT is running in a container and no swap space is defined, the JIT dynamically adjusts its scratch memory consumption based on the amount of free physical memory available, to avoid out-of-memory (OOM) occurrences.
-
Several performance features were added to the AArch64 JIT compiler implementation that led to a throughput improvement on multiple applications of at least 20%. The most notable improvements were seen in global register allocation, recompilation (without profiling), CUDA support, concurrent scavenge GC policy, and the inlined code sequence for object allocations.
New -XX:[+|-]HandleSIGABRT
option added
This option affects the handling of the operating system signal SIGABRT
. For compatibility with the reference implementation, set -XX:-HandleSIGABRT
. For more information, see -XX:[+|-]HandleSIGABRT
.
New -XX:[+|-]PrintFlagsFinal
option added
This release provides an initial implementation of the -XX:[+|-]PrintFlagsFinal
option. It is currently incomplete and outputs only a subset of parameters. Over time, we expect more options to be added to the output. See -XX:[+|-]PrintFlagsFinal
for more details about this option.
Update to NoClassDefFoundError
exception message
The order in which class names are printed in a NoClassDefFoundError
exception message now matches the output reported by HotSpot.
For example, in the following exception message:
java.lang.NoClassDefFoundError: mypackage/Main (wrong name: Main)
mypackage/Main
is the class name encountered by the VM in the .class
file, but "wrong name" Main
was the provided class name. Prior to this update to the exception message, the encountered class name and the provided class name were swapped in the NoClassDefFoundError
exception message.
macOS shared libraries version updated
The version information for shared libraries on macOS has been updated from 0.0.0 to 1.0.0. If an application has linked against a shared library from a previous OpenJ9 release, it needs to be re-linked against the new release. Failure to re-link causes an error Incompatible library version
, requires version 0.0.0
.
Support for OpenJDK HotSpot options
For compatibility, the following OpenJDK HotSpot option is now supported by OpenJ9:
-XX:[+|-]ShowCodeDetailsInExceptionMessages
. This option is a part of JEP 358: Helpful NullPointerExceptions and specifies whether the extended message is displayed or not when aNullPointerException
is generated by a VM. You can enable this feature with the-XX:+ShowCodeDetailsInExceptionMessages
option.
Full release information
To see a complete list of changes between Eclipse OpenJ9 version 0.20.0 and version 0.21.0 releases, see the Release notes.