What's new in version 0.46.0

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

Features and changes

Support added for the com.sun.management.ThreadMXBean.getTotalThreadAllocatedBytes() API

With this release, the OpenJ9 VM implementation supports measurement of the total memory allocation for all threads (com.sun.management.ThreadMXBean.getTotalThreadAllocatedBytes() API).

The getTotalThreadAllocatedBytes() method now returns the total thread allocated bytes instead of -1.

-Xtgc:allocation report includes core allocation cache statistics per thread

The -Xtgc:allocation option prints thread-specific allocation cache (TLH) statistics in addition to the cumulative allocation statistics.

New -XX:[+|-]ShareOrphans option added

When -Xshareclasses was specified, only those class loaders that implemented the OpenJ9's public shared classes cache APIs (and its child class loaders) could store classes to the shared classes cache. Custom class loaders that did not implement these cache APIs cannot pass the module or class path information to the VM. Classes of such class loaders were not stored to the cache.

You can enable class sharing from all class loaders, irrespective of whether the class loader implements the shared classes cache API, with the -XX:+ShareOrphans option.

For more information, see -XX:[+|-]ShareOrphans.

New -XX:[+|-]JITServerAOTCacheIgnoreLocalSCC option added

From this release onwards, the default behavior of the client when it uses the JITServer AOT cache is to bypass its local shared classes cache (if one is set up) during JITServer AOT cache compilations. You can control how the JITServer AOT cache feature interacts with the local cache at JITServer client VMs with the -XX:[+|-]JITServerAOTCacheIgnoreLocalSCC option.

New -XdynamicHeapAdjustment option added

By default, if a checkpoint is taken in a container with no memory limits and then restored in a container with memory limits, the restored VM instance does not detect the memory limits.

You can now create a single image file and restore it on various nodes with different memory limits. The new option -XdynamicHeapAdjustment automatically adjusts the maximum Java heap size (-Xmx) and minimum Java heap size (-Xms) values such that they are within the physical memory limitations on the system.