RFR: 8330414: GenShen: Class unloading requires old regions be made parseable [v2]

William Kemper wkemper at openjdk.org
Tue Apr 23 20:22:14 UTC 2024


> Even when the generational mode is using the mark bitmap to scan the remembered set's card tables, the card table offsets may refer to unmarked objects. If the classes referred to by these unmarked objects have been reloaded in metaspace, the class pointer may no longer be valid or may refer to a class with a different size than expected by the parser. This may cause the remembered set scan to miss oops that should be included in the root set.
> 
> GenShen will attempt to make these old regions parseable after mixed evacuations have completed, but only if no GCs have been requested. When GenShen is under memory pressure and running back-to-back GCs, it may not make these old regions parseable before the remembered set is scanned again. This change adds an uninterruptible phase to make old regions parseable when a global cycle has unloaded classes.

William Kemper has updated the pull request incrementally with three additional commits since the last revision:

 - Full GC should indicate that it has made old regions parseable
 - Fix typo and warning
 - Update state diagram ascii art

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

Changes:
  - all: https://git.openjdk.org/shenandoah/pull/424/files
  - new: https://git.openjdk.org/shenandoah/pull/424/files/3fa9bef4..5e1350ff

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=shenandoah&pr=424&range=01
 - incr: https://webrevs.openjdk.org/?repo=shenandoah&pr=424&range=00-01

  Stats: 43 lines in 2 files changed: 17 ins; 1 del; 25 mod
  Patch: https://git.openjdk.org/shenandoah/pull/424.diff
  Fetch: git fetch https://git.openjdk.org/shenandoah.git pull/424/head:pull/424

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


More information about the shenandoah-dev mailing list