RFR: Mixed evacuation [v7]
Kelvin Nilsen
kdnilsen at openjdk.java.net
Wed Apr 21 23:48:09 UTC 2021
> This code adds to generational Shenandoah the ability to perform concurrent garbage collection of young-gen and old-gen memory. Following completion of an old-gen concurrent marking effort, we select certain old-gen heap regions to serve as candidates for future collection sets. All dead objects within the old-gen heap regions that are not part of this candidate set are coalesced and filled so that remembered-set scanning of these old-gen heap regions will not be confused by "zombie objects" (objects that old-gen has decided are dead, which reside in regions that have not yet been collected). After concurrently coalescing and filling these dead objects, each subsequent young-gen evacuation pass includes a subset of the old-gen candidates until all candidates have been collected. This code passes TIER1 and hotspot-gc-shenandoah jtreg tests without regressions. A new jtreg test has been added to exercise concurrent old/young GC.
Kelvin Nilsen has updated the pull request incrementally with one additional commit since the last revision:
Cosmetic improvements requested by review
Following these changes, we ran jtreg TIER1 and hotspot_gc_shenandoah tests with no regressions.
Also ran a stress Extremem workload.
-------------
Changes:
- all: https://git.openjdk.java.net/shenandoah/pull/29/files
- new: https://git.openjdk.java.net/shenandoah/pull/29/files/c8377a53..d6fa428b
Webrevs:
- full: https://webrevs.openjdk.java.net/?repo=shenandoah&pr=29&range=06
- incr: https://webrevs.openjdk.java.net/?repo=shenandoah&pr=29&range=05-06
Stats: 81 lines in 16 files changed: 17 ins; 13 del; 51 mod
Patch: https://git.openjdk.java.net/shenandoah/pull/29.diff
Fetch: git fetch https://git.openjdk.java.net/shenandoah pull/29/head:pull/29
PR: https://git.openjdk.java.net/shenandoah/pull/29
More information about the shenandoah-dev
mailing list