What's new in version 0.15.1
The following new features and notable changes since version 0.14.0 are included in this release:
- New binaries and changes to supported environments
- Performance improvements for JVMTI watched fields
- Support for pause-less garbage collection on IBM Z systems
- ChaCha20 algorithm support for OpenSSL
- OpenSSL Digest algorithm disabled
- Support for OpenJDK HotSpot options
- Support for Transparent Huge Pages (THP)
- Support for low-overhead heap profiling (JEP 331)
- New Java memory map (jmap) tool
- Automatically setting an initial heap size
- Removal of -Xdiagnosticscollector option
- Change in behaviour of -XX:[+|-]IdleTuningCompactOnIdle
- Addition of heuristics for compaction during idle GC
- Change in shared classes behavior for checking timestamps of
Features and changes
Binaries and supported environments
OpenJ9 release 0.15.0 and 0.15.1 supports OpenJDK 8, 11, and 12.
Binaries are available from the AdoptOpenJDK community at the following links:
Note: The binaries at AdoptOpenJDK are labeled 0.15.1 due to a missing change.
To learn more about support for OpenJ9 releases, including OpenJDK levels and platform support, see Supported environments.
Performance improvements for JVMTI watched fields
OpenJ9 version 0.14.0 introduced the
-XX:[+|-]JITInlineWatches option, which, when enabled, turned on experimental JIT operations to improve the performance of JVMTI watched fields. Following successful results, this option is now enabled by default. This option is now also supported on z/OS® and Linux for IBM Z®, in addition to x86 platforms (Windows®, macOS®, and Linux).
Support for pause-less garbage collection on IBM Z systems
Support for Concurrent scavenge mode is now extended to Linux on IBM Z® systems and z/OS®. For more information, see
ChaCha20 algorithm support for OpenSSL
The ChaCha20 and ChaCha20-Poly1305 algorithms can now use OpenSSL on Java 11. For more information, see
OpenSSL Digest algorithm disabled
Due to issue #5611, the Digest algorithm is disabled. This algorithm was disabled for Java 8 and 11 in release 0.14.2, which did not support Java 12.
Support for OpenJDK HotSpot options
For compatibility, the
-XX:OnOutOfMemoryError OpenJDK HotSpot option is now supported by OpenJ9.
Support for Transparent Huge Pages (THP)
The VM now supports the allocation of huge pages on Linux when you use the
/sys/kernel/mm/transparent_hugepage/enabled) setting. To enable this feature, set
-XX:+TransparentHugePage on the command line when you start your application. This option is currently not enabled by default.
Support for low-overhead heap profiling
JEP 331 provides a mechanism for sampling Java heap allocations with a low overhead via the JVM Tool Interface (JVMTI).
Restrictions: JEP 331 is implemented for OpenJ9 with the following limitations:
metronomegarbage collection policies are not supported.
- The JEP331 JVMTI agent and the Health Center agent both set a sampling interval, which by default is different. If both agents are used at the same time the Health Center agent will get incorrect results, unless the sampling intervals are adjusted to use the same value.
New Java memory map tool
The Java memory map (jmap) tool is similar to the HotSpot tool of the same name, and can be used to print statistics about classes on the heap, including the number of objects and their aggregate size. For usage information, see Java memory map (jmap) tool.
Automatically setting an initial heap size
OpenJ9 can now learn and set an appropriate initial heap size for an application as an alternative to a user manually sizing and setting an
-Xms value. The VM records the size of the heap when startup processing ends, writing this data to the shared classes cache. An average value is set over a few restarts, helping to ensure that the value used for the initial heap size is as accurate as possible. The heap size recorded is specific to the application command line, therefore a different hint is stored for every unique command line.
To turn on this behavior, set the
-XX:+UseGCStartupHints option on the command line when you start your application.
Removal of -Xdiagnosticscollector option
This option was redundant and has now been removed. If you try to use this option on the command line, the VM outputs this error message:
JVMJ9VM007E Command-line option unrecognised: -Xdiagnosticscollector
Change in behaviour of -XX:IdleTuningCompactOnIdle
-XX:[+|-]IdleTuningCompactOnIdle is now no longer effective when -XX:+IdleTuningGcOnIdle is not specified.
Heuristics for compaction during idle GC
OpenJ9 now automatically compacts the heap when certain triggers are met during idle garbage collection (GC). As a result of this change,
-XX:[+|-]IdleTuningCompactOnIdle is deprecated.
Change in shared classes behavior for checking timestamps of
In earlier releases, the shared classes cache checks timestamps of
zip files every time a class is loaded and reloads a class if the timestamp has changed. This behavior is now changed; timestamps are checked only when
jar files are added to class loaders and used for the first time to look for a class, which can improve class-loading performance. If
zip files are updated after a class loader starts loading classes from them, an older version of the class might be loaded from the shared classes cache. To revert to the behavior of earlier releases, set the
-Xshareclasses:checkURLTimestamps option on the command line when you start your application.
-Xshareclasses: options are not combined, only the last one is used.
Full release information
To see a complete list of changes between Eclipse OpenJ9 version 0.14.0 and version 0.15.1 releases, see the Release notes.