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