Skip to content

CAUTION: This site hosts draft documentation for the next release. For published content of the latest release, visit

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

Binaries and supported environments

OpenJ9 release 0.30.0 supports OpenJDK 8, 11 and 17.

To learn more about support for OpenJ9 releases, including OpenJDK levels and platform support, see Supported environments.

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

2CIIGNOREDARG            -XX:+UseCompressedOop
2CIIGNOREDARG            -XX:CompressedClassSpaceSize=528482304

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

This option specifies/unspecifies classes of objects that will be hashed and extended with a hash slot upon object creation or first move. This option may improve performance for applications that frequently hash objects of a certain type. See -XX:[+|-]EnsureHashed for more details.

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:

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.

Known problems and full release information

To see known problems and a complete list of changes between Eclipse OpenJ9 v0.29.0 and v0.30.0 releases, see the Release notes.