What's new in version 0.18.1
The following new features and notable changes since version 0.17.0 are included in this release:
- Binaries and supported environments
- Technical preview of JITServer technology
jextract
now available on macOS® for OpenJDK version 8- New shared-classes cache suboption to turn off timestamp checking
- Removal of restriction on layered shared cache
-Xmso
1 MB minimum value on z/OS® 64-bitjstat
: new Java™ statistics monitoring tool-XX:+TransparentHugePage
is enabled by default on more Linux® systems- New exit dump agent and
ExitOnOutOfMemoryError
option - LUDCL caching enabled by default
- Terabytes suffix support for
-X
and-XX
options that take a size - Improved support for pause-less garbage collection
-Xgc:noConcurrentScavenge
option- Support for OpenJDK HotSpot options
- Shared classes cache suboptions for layered caches no longer experimental
-Djava.lang.string.substring.nocopy
option
Features and changes
Binaries and supported environments
Eclipse 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
The 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 ExitOnOutOfMemoryError
option
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 -Xdump
.
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 -XX:[+|-]ExitOnOutOfMemoryError
.
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 -X
and -XX
options that take a size
OpenJ9 now supports 't' and 'T' suffixes (indicating terabytes) for -X
and -XX
options that take a <size>
parameter.
Improved support for pause-less garbage collection
Support for Concurrent scavenge mode is now extended to macOS. For more information, see -Xgc:concurrentScavenge
.
-Xgc:noConcurrentScavenge
option
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:
createLayer
layer=<number>
(see this section for more information about layered caches)printTopLayerStats
destroyAllLayers
-Djava.lang.string.substring.nocopy
option
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 version 0.17.0 and version 0.18.0 releases, see the Release notes.