RFR: 8365880: Shenandoah: Unify memory usage accounting in ShenandoahFreeSet

Kelvin Nilsen kdnilsen at openjdk.org
Tue Sep 9 20:05:02 UTC 2025


This PR eliminates redundant bookkeeping that had been carried out by both ShenandoahGeneration and ShenandoahFreeSet.  In the new code, we keep a single tally of relevant information within ShenandoahFreeSet.
Queries serviced by ShenandoahGeneration are now delegated to ShenandoahFreeSet.

This change eliminates rare and troublesome assertion failures that were often raised when the ShenandoahFreeSet tallies did not match the ShenandoahGeneration tallies.  These assertion failures resulted because the two sets of books are updated at different times, using different synchronization mechanisms.

The other benefit of this change is that we have less synchronization overhead because we only have to maintain a single set of books.

-------------

Commit messages:
 - Fix ShenandoahAllocationRate::sample() and remove debug scaffolding
 - Remove debug instrumentation
 - Cleanup make_all_regions_unavailable()
 - Remove RENAISSANCE debugging instrumentation
 - Replace MEMORY_USAGE debugging with assertions
 - Zero [empty_]region_counts in make_all_regions_unavailable plus lots of debug instrumentation
 - fix white space
 - more fixes to pip accounting
 - Fix accounting for pip regions
 - Initialize _mutator_bytes_allocated_since_gc-start
 - ... and 102 more: https://git.openjdk.org/jdk/compare/05da2137...87e26b37

Changes: https://git.openjdk.org/jdk/pull/26867/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=26867&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8365880
  Stats: 3113 lines in 35 files changed: 1977 ins; 542 del; 594 mod
  Patch: https://git.openjdk.org/jdk/pull/26867.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/26867/head:pull/26867

PR: https://git.openjdk.org/jdk/pull/26867


More information about the hotspot-gc-dev mailing list