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