RFR: 8316297: GenShen: Degenerated GCs fail to make progress

Kelvin Nilsen kdnilsen at openjdk.org
Thu Sep 14 14:38:42 UTC 2023


A recent change to the implementation of ShenandoahYoungGeneration::available() resulted in a budgeting shortfall during degenerated GC.  The problem is that we degenerate after mutator allocations fail, at which time young available memory is in very short supply.  The change to available() caused us to only see the mutator budget, which has been depleted.  This resulted in a very high probability that degenerated GC would fail to make progress, forcing degenerated GC to upgrade to full GC.

This PR makes the Collector reserve memory visible to the function that computes evacuation budgets, thereby increasing the likelihood of a successful degenerated cycle and obviating the need for a Full GC.

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

Commit messages:
 - Include memory reserved for Collector when computing evacuation budget

Changes: https://git.openjdk.org/shenandoah/pull/324/files
 Webrev: https://webrevs.openjdk.org/?repo=shenandoah&pr=324&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8316297
  Stats: 18 lines in 3 files changed: 14 ins; 0 del; 4 mod
  Patch: https://git.openjdk.org/shenandoah/pull/324.diff
  Fetch: git fetch https://git.openjdk.org/shenandoah.git pull/324/head:pull/324

PR: https://git.openjdk.org/shenandoah/pull/324


More information about the shenandoah-dev mailing list