RFR: Shenandoah string deduplication
Zhengyu Gu
zgu at redhat.com
Wed Dec 6 17:15:11 UTC 2017
The implementation takes different approach from G1's implementation.
* It treats string dedup queue/table as weak roots.
* It identifies deduplication candidates during concurrent marking and
during full gc, to reduce impact on pause time.
* To properly identify the candidates, it manipulates string's age field
concurrently, to prevent from processing string too early or
deduplicating the same string over and over again. While it is
undesirable, it reduces the risk by only manipulating *regular* strings
- when they do not have displaced headers. Locked objects are relative
rare, especially for immutable objects, such as Strings.
* Deduplicate routine is implemented lock-free, in case we have to embed
it in barriers.
* Reverted all early changes to G1's implementation
Webrev: http://cr.openjdk.java.net/~zgu/shenandoah/sh_strdedup/webrev.00/
Test:
hotspot_gc_shenandoah (fastdebug and release)
specJBB (fastdebug and release)
Thanks,
-Zhengyu
More information about the shenandoah-dev
mailing list