RFR: Mark-compact performance improvements and cleanups
Aleksey Shipilev
shade at redhat.com
Thu May 31 08:49:20 UTC 2018
On 05/31/2018 10:45 AM, Roman Kennke wrote:
> This does, in fact, raise the question about the interaction between
> full-gc (with or without liveness counting) and traversal: next
> traversal cycle after full-gc will use liveness data for heuristics
> decision. Do we need to clean liveness after full-gc (which basically
> resets to the initial state before first-ever cycle) ? Or should we fix
> liveness data after full-gc compaction? Because the marked liveness will
> not be correct. I suspect fixing it up gives us better data to base
> heuristics on...
I think ShenandoahPostCompactClosure (re)sets the amount of live data after Full GC, to what heap
looks like after compaction. E.g. all compacted regions would be set "live" = "used", which is what
Traversal would expect? See:
class ShenandoahPostCompactClosure : public ShenandoahHeapRegionClosure {
bool heap_region_do(ShenandoahHeapRegion* r) {
...
size_t live = r->used();
...
r->set_live_data(live);
}
}
Thanks,
-Aleksey
More information about the shenandoah-dev
mailing list