RFR: 8158871: Long response times with G1 and StringDeduplication

Per Liden per.liden at oracle.com
Mon Jun 13 10:19:57 UTC 2016


Hi,

Could I please have a couple of reviews in this bug fix.

Summary: When entries are pruned from the StringDedupTable, the actual 
freeing of those entries are done while both holding the 
StringDedupTable_lock and being joined to the SuspendibleThreadSet. This 
causes both String.intern() and safepoints to be blocked until the 
freeing is completed. As described in the bug report, this can cause a 
very noticeable hick up in application response times when a huge amount 
(millions) of entries are pruned at once. The patch fixes this by moving 
all freeing out from the StringDedupTable_lock and the 
SuspendibleThreadSet is only joined temporarily to bulk-extract the list 
of entries to free, which is an O(1) operation.

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

Bug: https://bugs.openjdk.java.net/browse/JDK-8158871

Testing: All jtreg string dedup tests pass. Manually provoked the 
problematic condition and verified that the actual freeing of entries 
doesn't block safepoints or String.intern().

thanks,
Per




More information about the hotspot-gc-dev mailing list