What's new in version 0.12.x
The following new features and notable changes since V0.11.0 are included in this release:
- Improved flexibility for managing the size of the JIT code cache
- Idle-tuning is enabled by default when OpenJ9 runs in a docker container
- Changes to default shared classes cache directory permissions (not Windows)
- OpenSSL is now supported for improved native cryptographic performance
- Improved support for pause-less garbage collection
- RSA algorithm support for OpenSSL
Warning: Following the release of OpenJ9 0.12.0, an intermittent problem
was identified with OpenSSL V1.1.x acceleration of the cryptographic Digest algorithm. For more information about the issue, see #4530. You can turn off the Digest algorithm by setting the -Djdk.nativeDigest system property to
false. A new release of OpenJ9 (0.12.1) is available that disables the Digest algorithm by default.
Features and changes
Binaries and supported environments
OpenJ9 release 0.12.0 provides support for OpenJDK 8 with OpenJ9 and OpenJDK 11 with OpenJ9. In this release support is extended to the 64-bit macOS® platform on OpenJDK with OpenJ9.
Builds for all platforms are available from the AdoptOpenJDK project at the following links:
To learn more about support for OpenJ9 releases, including OpenJDK levels and platform support, see Supported environments.
Improved flexibility for managing the size of the JIT code cache
The JIT code cache stores the native code of compiled Java™ methods. By default, the size of the code cache is 256 MB for a 64-bit VM and 64 MB for a 31/32-bit VM. In earlier releases the size of the code cache could be increased from the default value by using the
-Xcodecachetotal command line option. In this release the size can also be decreased by using this option, with a minimum size of 2 MB. The size of the JIT code cache also affects the size of the JIT data cache, which holds metadata about compiled methods. If you use the
-Xcodecachetotal option to manage the size of the code cache, the size of the data cache is adjusted by the same proportion. For more information, see
Idle-tuning is enabled by default when OpenJ9 runs in a docker container
In an earlier release, a set of idle-tuning options were introduced to manage the footprint of the Java heap when the OpenJ9 VM is in an idle state. These options could be set manually on the command line. In this release, the following two options are enabled by default when OpenJ9 is running in a container:
-XX:[+|-]IdleTuningGcOnIdle, which runs a garbage collection cycle and releases free memory pages back to the operating system when the VM state is set to idle.
-XX:[+|-]IdleTuningCompactOnIdle, which compacts the object heap to reduce fragmentation when the VM state is set to idle.
By default, the VM must be idle for 180 seconds before the status is set to idle. To control the wait time before an idle state is set, use the
-XX:IdleTuningMinIdleWaitTime option. To turn off idle detection, set the value to
Changes to default shared classes cache directory permissions (not Windows)
If you do not use the
cachDirPerm suboption to specify permissions for a shared classes cache directory, and the cache directory is not the
/tmp/javasharedresources default, the following changes apply:
- When creating a new cache directory, the default permissions are now stricter.
- If the cache directory already exists, permissions are now unchanged (previously, when a cache was opened using this directory, the permissions would be set to 0777).
For more information, see
OpenSSL is now supported for improved native cryptographic performance
OpenSSL is a native open source cryptographic toolkit for Transport Layer Security (TLS) and Secure Sockets Layer (SSL) protocols, which provides improved cryptographic performance compared to the in-built OpenJDK Java cryptographic implementation. The OpenSSL V1.1.x implementation is enabled by default and supported for the Digest, CBC, and GCM algorithms. Binaries obtained from AdoptOpenJDK include OpenSSL v1.1.x (see Note). For more information about tuning the OpenSSL implementation, see Performance tuning.
Note: OpenJDK 8 with OpenJ9 includes OpenSSL support since V0.11.0. Currently, OpenSSL is not bundled as part of the AdoptOpenJDK AIX binaries due to an unresolved problem.
Improved support for pause-less garbage collection
Concurrent scavenge mode is now supported on 64-bit Windows operating systems.
In Eclipse OpenJ9 V0.11.0, support was added for
-Xgc:concurrentScavenge on Linux x86-64 virtual machines that use compressed references. In this release, support is now available for Linux x86-64 large-heap virtual machines (non-compressed references).
For more information, see the
RSA algorithm support for OpenSSL
OpenSSL v1.1 support for the RSA algorithm is added in this release, providing improved cryptographic performance. OpenSSL support is enabled by default. If you want to turn off support for the RSA algorithm, set the
-Djdk.nativeRSA system property to
IBM_JAVA_OPTIONS is deprecated
The VM environment variable
IBM_JAVA_OPTIONS is deprecated and is replaced by
IBM_JAVA_OPTIONS will be removed in a future release. For more information about the use of this variable, see the general options in Environment variables.
Full release information
To see a complete list of changes between Eclipse OpenJ9 V0.11.0 and V0.12.0 releases, see the Release notes.
The following change is implemented since V0.12.0:
By default, OpenJ9 provides native cryptographic acceleration using OpenSSL V1.1.x for the Digest, CBC, GCM, and RSA algorithms. Under certain circumstances acceleration of the Digest algorithm was found to cause a segmentation error. Cryptographic acceleration of the Digest algorithm is now turned off by default. The system property
-Djdk.nativeDigest cannot be used to turn on support. This property is ignored by the VM.
Full release information
Release notes to describe the changes between Eclipse OpenJ9 V0.12.0 and V0.12.1 releases, can be found in the OpenJ9 GitHub repository.