RFR(L): 8029075 - String deduplication in G1

Per Liden per.liden at oracle.com
Mon Mar 3 05:33:08 PST 2014


Hi,

Could I please have this patch reviewed.


Summary
-------
This patch implements JEP 192 - String deduplication in G1. The goal of 
string deduplication is to reduce the Java heap live-data set by 
enhancing the G1 garbage collector so that duplicate instances of String 
are automatically and continuously deduplicated.

I'd like to refer to the JEP for a more detailed description of this 
feature, the motivation for it, the expected benefit, how it's 
implemented, etc.

This patch is mainly G1-related, but also touches a few runtime files.

Webrev: http://cr.openjdk.java.net/~pliden/8029075/webrev.0/

JEP: http://openjdk.java.net/jeps/192

RFE: https://bugs.openjdk.java.net/browse/JDK-8029075


Testing
-------
* JTreg - The patch includes the following 8 new tests:
   - TestStringDeduplicationYoungGC.java: Tests deduplication during 
Young GC.
   - TestStringDeduplicationFullGC.java: Tests deduplication during Full GC.
   - TestStringDeduplicationAgeThreshold.java: Tests both valid and 
invalid age threshold settings.
   - TestStringDeduplicationInterned.java: Tests that interned strings 
are deduplication before being interned.
   - TestStringDeduplicationTableRehash.java: Stresses the hashtables 
ability to rehash all entries.
   - TestStringDeduplicationTableResize.java: Stresses the hashtables 
ability to resize itself.
   - TestStringDeduplicationMemoryUsage.java: Tests heap reduction when 
string deduplication is enabled.
   - TestStringDeduplicationPrintOptions.java: Tests command line options.

* Stress testing:
   - Kitchensink
   - GCBasher

* Regression testing:
   - JCK
   - vmTestbase
   - Bigapps

* Large scale benchmarks to test heap reduction and performance impact:
   - FA CRM Sales Op. Flow
   - FA DSS

* The following benchmarks have been executed to verify that this 
feature doesn't impact performance when disabled (even when disabled 
there are still some "if (UseStringDeduplication)" executed in some hot 
paths).
   - SPECjbb2005
   - SPECjbb2013
   - SPECjvm2008-XML

* Various ad-hoc tests and microbenchmarks were also written and 
executed during the course of the development.


Thanks!
/Per


More information about the hotspot-dev mailing list