RFR: 8191565: Last-ditch Full GC should also move humongous objects
Ivan Walulya
iwalulya at openjdk.org
Thu Mar 2 13:56:04 UTC 2023
Hi All,
Please review this change to move humongous regions during the Last-Ditch full gc ( on `do_maximal_compaction`). This change will enable G1 to avoid encountering Out-Of-Memory errors that may occur due to the fragmentation of memory regions caused by the allocation of large memory blocks.
Here's how it works: At the end of `phase2_prepare_compaction`, G1 performs a serial compaction process for regular objects, which results in the heap being divided into two parts. The first part is a densely populated prefix that contains all the regular objects that have been moved. The second part consists of the remaining heap space, which may contain free regions, uncommitted regions, and regions that are not compacting. By moving/compacting the humongous objects in the second part of the heap closer to the dense prefix, G1 reduces the region fragmentation and avoids running into OOM errors.
We have enabled for G1 the Jtreg test that was previously used only for Shenandoah to test such workload.
Testing: Tier 1-3
-------------
Commit messages:
- restructure
- add test
- breakout large functioons
- working prototype
Changes: https://git.openjdk.org/jdk/pull/12830/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=12830&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8191565
Stats: 333 lines in 13 files changed: 318 ins; 9 del; 6 mod
Patch: https://git.openjdk.org/jdk/pull/12830.diff
Fetch: git fetch https://git.openjdk.org/jdk pull/12830/head:pull/12830
PR: https://git.openjdk.org/jdk/pull/12830
More information about the shenandoah-dev
mailing list