What's new in version 0.30.0

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

Features and changes

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. For more information about the -Xshareclasses option, including the destroy options that you can use to remove caches, see -Xshareclasses.

Ignored options captured in java dumps

For improved compatibility with other Java implementations, OpenJ9 ignores many command-line options. If any were ignored, they are now listed in the java dump files. For example, the command

java -Xdump:java:events=vmstop -XX:+UseCompressedOop -XX:CompressedClassSpaceSize=528482304 -version

would yield the following in the ENVINFO section after the complete list of all command-line arguments

1CIIGNOREDARGS Ignored Args:
2CIIGNOREDARG            -XX:+UseCompressedOop
2CIIGNOREDARG            -XX:CompressedClassSpaceSize=528482304

Redesigned heap resizing for the balanced GC policy

Heap resizing heuristics have been redesigned for the balanced GC policy. This includes both total heap resizing including eden and non-eden components independently, and also balancing between these two components when the heap is fully expanded. The heuristics now combine both the CPU overhead (for Partial GCs as well as Global Mark Phase) and the heap occupancy criteria. The balancing between eden and non-eden for fully expanded heaps is far more dynamic (instead of being mostly fixed in the ratio 1:4).

As a consequence, there should typically be less need for heap sizing tuning options, most notably for eden sizing options -Xmn, -Xmns, and -Xmnx.

Also, a new soft limit pause target is added for Partial GCs, which defaults to 200ms. This criterion is combined with the PGC CPU overhead criterion for a balanced compromise between minimizing footprint, maximizing throughput, and meeting the paused time target.

More details about the new heuristics can be found at:

https://blog.openj9.org/2021/09/24/balanced-gc-performance-improvements-eden-heap-sizing-improvements/

The heuristics now obey the following existing options that were previously used for the optthruput, optavgpause, and gencon GC policies:

The heuristics also use the -Xgc:targetPausetime option that was previously used only for the metronome GC policy.

For more information about GC policies, see Garbage collection policies.