CAUTION: This site hosts draft documentation for the next release. For published content of the latest release, visit www.eclipse.org/openj9/docs

What's new in version 0.15.1

The following new features and notable changes since v 0.14.0 are included in this release:

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: - OpenJDK version 8 - OpenJDK version 11 - OpenJDK version 12

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 -Xgc:concurrentScavenge.

Start of content that applies only to Java 11 (LTS) ChaCha20 algorithm support for OpenSSL

The ChaCha20 and ChaCha20-Poly1305 algorithms can now use OpenSSL on Java 11. For more information, see -Djdk.nativeChaCha20. End of content that applies only to Java 11 (LTS)

Start of content that applies only to Java 12) 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 madvise (/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.

Start of content that applies to Java 11 (LTS) and later 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:

  • The balanced and metronome garbage 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. End of content that applies only to Java 11 (LTS)

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 jar or zip files

In earlier releases, the shared classes cache checks timestamps of jar or 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 zip or 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 jar or 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.

Note: Multiple -Xshareclasses: options are not combined, only the last one is used.

Full release information

To see a complete list of changes between Eclipse OpenJ9 v 0.14.0 and v 0.15.1 releases, see the Release notes.