RFR: Mark-compact performance improvements and cleanups

Roman Kennke rkennke at redhat.com
Thu May 31 08:54:44 UTC 2018


Am 31.05.2018 um 10:49 schrieb Aleksey Shipilev:
> 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);
>   }
> }
> 

Ah! Very well then! Go!

Thanks!
Roman




More information about the shenandoah-dev mailing list