RFR(M): Shenandoah string dedup support
Zhengyu Gu
zgu at redhat.com
Tue Aug 22 18:01:36 UTC 2017
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