What's new in version 0.16.0
The following new features and notable changes since version 0.15.1 are included in this release:
- Automatic setting of initial heap size is enabled by default
- Option to share VM anonymous classes
- Performance improvements for JVMTI watched fields on Power Systems
- Linux on x86: Support for Transparent Huge Pages (THP)
- Changes to the shared classes cache generation number
Features and changes
Automatic setting of initial heap size is enabled by default
OpenJ9 version 0.15.1 introduced the -XX:[+|-]UseGCStartupHints option, which, when enabled, turned on the automatic learning and setting of an appropriate heap size for an application. This option is now enabled by default.
Option to share VM anonymous classes
Prior to version 0.16.0, anonymous classes, those created by Unsafe.defineAnonymousClass, were not stored in the shared classes cache. They are now stored there by default, which means they are available for ahead-of-time (AOT) compilation, potentially improving startup performance. A new command, -XX:[+|-]ShareAnonymousClasses, is introduced that enables you to stop anonymous classes being stored in the shared classes cache.
Performance improvements for JVMTI watched fields on Power Systems
OpenJ9 version 0.14.0 introduced the -XX:[+|-]JITInlineWatches option, which turns on JIT operations to improve the performance of JVMTI watched fields. This option, which was enabled by default in version 0.15.1, is now also supported on AIX® and Linux on Power Systems™.
Linux® on x86: Support for Transparent Huge Pages (THP)
When you use the madvise (/sys/kernel/mm/transparent_hugepage/enabled) setting on Linux on x86 systems, THP is now enabled by default. To disable this feature, set -XX:-TransparentHugePage on the command line when you start your application. The THP setting on other systems remains disabled by default when you use madvise, but can be enabled by setting -XX:+TransparentHugePage.
Changes to the shared classes cache generation number
The format of classes that are stored in the shared classes cache is changed, which causes the JVM to create a new shared classes cache rather than re-creating or reusing an existing cache. To save space, you can remove all existing shared caches unless they are in use by an earlier release. As a result of the format change, a layer column now appears in the output of the -Xshareclasses:listAllCaches option. This change is to support a future enhancement.
For more information about the -Xshareclasses option, including the destroy options that you can use to remove caches, see -Xshareclasses.