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

Kelvin Nilsen kdnilsen at openjdk.org
Tue Apr 23 20:22:14 UTC 2024


On Tue, 23 Apr 2024 20:18:52 GMT, William Kemper <wkemper at openjdk.org> wrote:

>> 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

Thanks for working through this fix, and the code cleanup also.

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

Marked as reviewed by kdnilsen (Committer).

PR Review: https://git.openjdk.org/shenandoah/pull/424#pullrequestreview-2018148833


More information about the shenandoah-dev mailing list