RFR: Mixed evacuation [v6]
Kelvin Nilsen
kdnilsen at openjdk.java.net
Tue Apr 20 00:10:04 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:
Change definition of CollectionThresholdGarbagePercent
This is now defined to equal ShenandoahGarbageThreshold, which seems to have
a default value of 25. The effect on running workloads is to choose more
regions for the collection set than was observed with the previous
configuration.
Also addressed several improvements in white space and comments.
The code now runs tier1 and hotspot_gc_shenandoah without regressions. It
also succsessfully runs an Extremem stress test up until the point of
failure due to triggering of full GC (after 113 completed GC passes, including
two old-gen GC passes).
-------------
Changes:
- all: https://git.openjdk.java.net/shenandoah/pull/29/files
- new: https://git.openjdk.java.net/shenandoah/pull/29/files/c883f237..c8377a53
Webrevs:
- full: https://webrevs.openjdk.java.net/?repo=shenandoah&pr=29&range=05
- incr: https://webrevs.openjdk.java.net/?repo=shenandoah&pr=29&range=04-05
Stats: 17 lines in 5 files changed: 3 ins; 3 del; 11 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