RFR: DRAFT: Expand old on demand [v12]

Kelvin Nilsen kdnilsen at openjdk.org
Sat Apr 15 23:08:21 UTC 2023


> This PR describes several proposed changes to dynamically adjust the sizes of old-gen and young-gen.  In general, the objective is to keep old-gen as small as possible so that there is an abundance of memory available for the young-gen allocation runway.
> 
> As currently drafted, there are regression failures.  This DRAFT PR is published for the purpose of facilitating a careful code review.

Kelvin Nilsen has updated the pull request incrementally with three additional commits since the last revision:

 - Degen GC needs to evacuate even if cset is empty in some cases
   
   In particular, when there are humongous or regular regions to be promoted
   in place, we still need to "evacuate", because the evacuation phase takes
   responsibility for registering objects and building the remembered set.
 - Refine generational assertions for full-gc mode
   
   Certain assertions are not valid in full gc mode because full gc does not
   necessarily maintain all invariants during the STW pause.  By the time
   full gc finishes, all invariants should be restored, and they are checked
   then.
 - Do not verify usage accounting at start of Full GC
   
   If we degenerate to full in the middle of evacuation, usage accounts are in limbo.

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

Changes:
  - all: https://git.openjdk.org/shenandoah/pull/248/files
  - new: https://git.openjdk.org/shenandoah/pull/248/files/ab207852..585116df

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=shenandoah&pr=248&range=11
 - incr: https://webrevs.openjdk.org/?repo=shenandoah&pr=248&range=10-11

  Stats: 29 lines in 4 files changed: 14 ins; 5 del; 10 mod
  Patch: https://git.openjdk.org/shenandoah/pull/248.diff
  Fetch: git fetch https://git.openjdk.org/shenandoah.git pull/248/head:pull/248

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


More information about the shenandoah-dev mailing list