What's new in version 0.18.1
The following new features and notable changes since v 0.17.0 are included in this release:
- Binaries and supported environments
- Technical preview of JITServer technology
jextractnow available on macOS® for OpenJDK version 8
- New shared-classes cache suboption to turn off timestamp checking
- Removal of restriction on layered shared cache
-Xmso1 MB minimum value on z/OS® 64-bit
jstat: new Java™ statistics monitoring tool
-XX:+TransparentHugePageis enabled by default on more Linux® systems
- New exit dump agent and
- LUDCL caching enabled by default
- Terabytes suffix support for
-XXoptions that take a size
- Improved support for pause-less garbage collection
- Support for OpenJDK HotSpot options
- Shared classes cache suboptions for layered caches no longer experimental
Features and changes
Binaries and supported environments
OpenJ9 releases 0.18.0 and 0.18.1 support OpenJDK 8, 11, and 13. Binaries are available from the AdoptOpenJDK community at the following links:
Note: Binaries at AdoptOpenJDK that are labeled 0.18.1 include additional bug fixes. For more information, see the release notes.
To learn more about support for OpenJ9 releases, including OpenJDK levels and platform support, see Supported environments.
Technical preview of JITServer technology
A technical preview of JITServer technology is included in this release. It's currently available for OpenJDK 8 and OpenJDK 11 running on Linux on x86-64.
JITServer technology decouples the JIT compiler from the VM and lets the JIT compiler run remotely in its own process. This mechanism prevents your Java application suffering possible negative effects due to CPU and memory consumption caused by JIT compilation. This technology can improve quality of service, robustness, and even performance of Java applications. For more information, see JITServer technology.
jextract now available on macOS for OpenJDK version 8
jextract tool is now available on macOS platforms (as well as AIX® and Linux) for all current versions of OpenJDK: 8, 11, and 13.
New shared-classes cache suboption to turn off timestamp checking
You can set the
-Xshareclasses:noTimestampChecks option to turn off timestamp checking in shared classes. For more information, see the -Xshareclasses:noTimestampChecks option.
Removal of restriction on layered shared cache
In the previous release, there is a restriction that the
jvmtiSharedCacheInfo.isCorrupt field and the
SharedClassCacheInfo.isCacheCorrupt() method cannot detect a corrupted cache that has a layer number other than
0. This restriction is now removed. See the Shared classes API documentation.
-Xmso 1 MB minimum value on z/OS 64-bit
On z/OS 64-bit,
-Xmso has a 1 MB minimum value, to match the minimum stack space provided by the operating system. If you set a value smaller than 1 MB, the value is ignored.
jstat: new Java statistics monitoring tool
For compatibility with the HotSpot implementation, OpenJ9 now includes an independent implementation of the
jstat tool for retrieving statistics on a VM. For more information, see Java statistics monitoring tool.
-XX:+TransparentHugePage is enabled by default on more Linux systems
-XX:+TransparentHugePage is enabled by default on Linux systems for POWER® and IBM Z® as well as x86 systems. This option takes affect only when Transparent Huge Pages (THP) is set to
madvise on your system. When Transparent Huge Pages are used, your application footprint might increase.
New exit dump agent and
The new exit dump agent shuts down the VM when the specified event occurs. The exit agent is at priority level 0 and the tool agent has been moved to priority level 1 to aid in mimicking the behavior of HotSpot options. For more information about dump agents, see
OpenJ9 now supports the HotSpot option
-XX:[+|-]ExitOnOutOfMemoryError. You can set this option to have the VM shut down when a
java.lang.OutOfMemory error is thrown by the VM or in Java code. The exit dump agent is used in the implementation of
LUDCL caching enabled by default
By caching the Latest User Defined Class Loader (LUDCL), Java applications that use deserialization extensively can see a performance improvement. This capability is controlled by the
-Dcom.ibm.enableClassCaching system property and is now enabled by default. This feature was disabled for the 0.17.0 release due to issue #7332 which has now been resolved.
Terabytes suffix support for
-XX options that take a size
OpenJ9 now supports 't' and 'T' suffixes (indicating terabytes) for
-XX options that take a
Improved support for pause-less garbage collection
Support for Concurrent scavenge mode is now extended to macOS. For more information, see
The previously undocumented option
-Xgc:noConcurrentScavenge disables pause-less garbage collection.
Support for OpenJDK HotSpot options
For compatibility, the following OpenJDK HotSpot options are now supported by OpenJ9:
Shared classes cache suboptions for layered caches no longer experimental
The suboptions for creating layered caches are no longer marked experimental.
The new options are:
layer=<number>(see this section for more information about layered caches)
The previously undocumented Java 8 option
-Djava.lang.string.substring.nocopy=true avoids String sharing by String.substring(), which is the same behavior as the Oracle HotSpot VM.
Full release information
To see a complete list of changes between Eclipse OpenJ9 v 0.17.0 and v 0.18.0 releases, see the Release notes.