RFR: Degenerated GC mode for Traversal
Roman Kennke
rkennke at redhat.com
Wed Mar 21 13:04:12 UTC 2018
This implements degenerated GC for traversal.
The idea is that if alloc fails during concurrent traversal, we slide
into the degenerated pause, immediately drop the cset (and thus avoid
any further evacuation), but continue traversal with the taskqueues that
we have. This completes traversal of all live objects, and count
liveness for everything, including in the previously cset regions. At
the end of it, we reclaim every region that has zero live objects (i.e.
anything previously cset that's traversed during degen will not get
reclaimed).
I added special branch in process_oops() because we still need to update
refs even for non-cset (or rather, no-more-cset) reginos.
For pretty much the same reason I added a fixup_roots() that is slightly
different from the one in ShHeap.
Passes hotspot_gc_shenandoah
http://cr.openjdk.java.net/~rkennke/traversal-degen/webrev.01/
Ok?
Roman
More information about the shenandoah-dev
mailing list