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:
- Changes to the shared classes cache generation number
- Ignored options now captured in java dumps
- Redesigned heap resizing for the
balanced
GC policy
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:
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.