RFR: 8048180: Eager reclaim of humongous objects with references
Thomas Schatzl
tschatzl at openjdk.org
Sat Sep 27 08:54:24 UTC 2025
Hi all,
please review this change to G1 that enables eager reclaim of humongous objects with references, either objArrays or just really large objects.
It works the same as other humongous object's eager reclaim, with the caveat that I disabled it during concurrent mark to avoid problems with SATB. There is fairly extensive documentation about why I think this works, and how in the comment in `g1YoungCollector.cpp`.
The test case exhaustively tests all combinations of when a particular type of object should be able to be reclaimed depending on when it is allocated (only for `typeArray` and `objArray` - huge objects work the same as the latter).
I added a diagnostic flag `G1EagerReclaimWithRefs` to allow disabling this particular functionality for diagnostic purposes, but I think it's not really necessary, and I'm open to remove it.
The following screenshot shows pause times before (purple) and after (brown) of one of the [Optaplanner](https://www.optaplanner.org/blog/2021/09/15/HowMuchFasterIsJava17.html) benchmarks as a result of this change.
<img width="702" height="485" alt="Screenshot 2025-09-26 at 13 59 05" src="https://github.com/user-attachments/assets/995e9e27-f861-44bd-8ced-3bd952e314e8" />
Testing: new test cases, gha, tier1-5
Thanks,
Thomas
-------------
Commit messages:
- * also check for actual region reclamation
Changes: https://git.openjdk.org/jdk/pull/27525/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=27525&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8048180
Stats: 356 lines in 9 files changed: 187 ins; 113 del; 56 mod
Patch: https://git.openjdk.org/jdk/pull/27525.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/27525/head:pull/27525
PR: https://git.openjdk.org/jdk/pull/27525
More information about the hotspot-gc-dev
mailing list