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