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:
- New binaries and changes to supported environments
- Changes to the shared classes cache generation number
- Ignored options now captured in java dumps
- Redesigned heap resizing for the
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
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
-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
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.