RFR: Don't count evacs double in traversal GC

Roman Kennke rkennke at redhat.com
Wed Jan 31 22:18:39 UTC 2018


Am 31.01.2018 um 22:58 schrieb Roman Kennke:
> I think this improved liveness work just led me to find the liveness 
> accounting bug that I have observed occasionally. It seems we are 
> counting evacs double: once when allocating the gclab/shared-gc, and 
> once by the usual GC mechanics: we evac cset objects, then push them to 
> the queue, and when it's popped, we count liveness for the object, 
> regardless in which region it is. Let's never count any liveness on 
> allocation, and do GC traversal count it. This is more precise (not 
> counting any GCLAB waste).
> 
> http://cr.openjdk.java.net/~rkennke/traversal-liveness-accounting/webrev.00/ 
> 
> 
> Test: hotspot_gc_shenandoah
> 
> Ok?
> 
> Roman

Ok, this is probably nonsense. The traversal-in-progress check should 
already have caught this. However, outside of the traversal phase, there 
are no evacs either, so the whole switch-block is useless. The patch 
should still be useful as a cleanup and simplification.

Ok?

Roman


More information about the shenandoah-dev mailing list