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:
- Application Programming Interface (API) documentation
- Performance improvements
- New
-XX:[+|-]HandleSIGABRToption added - New
-XX:[+|-]PrintFlagsFinaloption added - Update to
NoClassDefFoundErrorexception message
Features and changes
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.