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