These release notes support the Eclipse OpenJ9 0.20.0 release plan.
OpenJ9 release 0.20.0 supports OpenJDK 8, 11, and 14.
Binaries are available at the AdoptOpenJDK project:
All builds are tested against the OpenJ9 functional verification (FV) test suite, the OpenJDK test suites, and additional tests at AdoptOpenJDK.
To learn more about support for OpenJ9 releases, including OpenJDK levels and platform support, see Supported environments.
The following table covers notable changes in v0.20.0. Further information about these changes can be found in the user documentation.
Issue number | Description | Version / Platform | Impact |
---|---|---|---|
#8498 | Change to default maximum heap size for Java 8 | OpenJDK8 only | For consistency with Java™ 11, the default maximum heap size (-Xmx) is changed to be 25% of the available memory with a maximum of 25 GB. Where there is 2 GB or less of physical memory, the value set is 50% of available memory with a minimum value of 16 MB and a maximum value of 512 MB. If a JVM is not configured properly, this change might lead to increased footprint size, startup time, and longer garbage collection pause times. If you want to revert to the default setting in earlier releases of OpenJ9, use the -XX:+OriginalJDK8HeapSizeCompatibilityMode option. |
#8886 | Change to the behavior of the -XX:[+|-]ExitOnOutOfMemoryError option | OpenJDK8 and later | The -XX:[+|-]ExitOnOutOfMemoryError option is updated to exit only on VM OutOfMemoryErrors instead of both VM and Java thrown errors to match the Hotspot option. |
#8047 | New option, -XX:[+|-]GlobalLockReservation | OpenJDK8 and later (Power systems only) | Option -XX:[+|-]GlobalLockReservation enables a new optimization targeted towards the more efficient handling of locking and unlocking Java objects. |
#8744 | Improvements to the jcmd tool | OpenJDK8 and later | The jcmd tool no longer requires a filename when used with the Dump.java, Dump.snap, or Dump.system options. |
The v0.20.0 release contains the following known issues and limitations:
Issue number | Description | Platform | Impact | Workaround |
---|---|---|---|---|
#8034 | Balanced garbage collection policy not supported | Linux on 64-bit ARM (AArch64) | The Balanced GC policy cannot be used. | Use an alternative GC policy, such as gencon. |
#8762 | Concurrent Scavenge mode not supported | Linux on 64-bit ARM (AArch64) | The concurrent scavenge mode (-Xgc:concurrentScavenge) of the gencon garbage collection policy cannot be used. | The gencon policy can still be used without this mode operational. |
#5917 | JIT dynamic loop transfer not supported | Linux on 64-bit ARM (AArch64) | Performance is not optimized in this release. | None. Performance will improve in a future release. |
#6607 | JIT recompilation not supported | Linux on 64-bit ARM (AArch64) | Performance is not optimized in this release. | None. Performance will improve in a future release. |
#8966/#9003 | AOT compilation is not working by default | Linux on 64-bit ARM (AArch64) | When using shared classes, startup performance is not optimized in this release. | To turn on AOT explicitly, specify the -Xquickstart or -Xaot option. |
#9251 | Problems reading system dumps | Linux on 64-bit ARM (AArch64) | Although core files are successfully generated on AArch64 systems, in some cases the dump viewer (jdmpview) in an Aarch64 JVM is unable to read them. | Read Aarch64 core files from an alternative JVM, such as x86 Linux or macOS. |
#479 | Non-compressed references VM builds not available | AIX | Non-compressed references VM builds, which support heaps larger than 57GB, are built on Linux, Windows, and macOS. | Manual builds on other platforms are possible by following our detailed build instructions. |
A full commit history for this release is available at Eclipse OpenJ9 v0.20.0.