RFR(M): Shenandoah string dedup support

Zhengyu Gu zgu at redhat.com
Tue Aug 22 18:42:44 UTC 2017


BTW, forgot to mention. I bypass queuing for partial GC, even it 
evacuates objects at safepoints, assuming we are moving to concurrent 
partial GC soon.

-Zhengyu


On 08/22/2017 02:01 PM, Zhengyu Gu wrote:
> Discussed with Roman during team meeting, I tried to minimize the 
> changes to shared/g1 code base, as we are not clear how GC interface 
> work will impact this area.
> 
> Shenandoah implementation is more complicated than I thought. G1 
> implementation is not quite suitable for Shenandoah overall. It built 
> upon that fact that G1 evacuates objects during safepoints, so 
> StringDedupQueue is implemented the way that enqueuing (inside 
> safepoints) and dequeuing (outside safepoints) do not overlap.
> 
> Shenandoah implementation uses age bits to track threshold for 
> deduplication as G1 does. It benefits from concurrent evacuation during 
> normal concurrent GC, that it can bypass queuing and deduplicate strings 
> while evacuating them.
> 
> We use G1's implementation for full GC, where we only queue the 
> candidates during safepoints, and process them outside of safepoints.
> 
> 
> Webrev: http://cr.openjdk.java.net/~zgu/shenandoah/strdedup/webrev.00/
> 
> Test:
> 
> hotspot_gc_shenandoah + new test : fastdebug and release
> 
> XmlTransform: fastdebug and release with heuristics : aggressive, 
> passive, generational, LRU
> 
> Thanks,
> 
> -Zhengyu
> 
> 
> 


More information about the shenandoah-dev mailing list