RFR(S): 8087143: Reduce Symbol::_identity_hash to 2 bytes

ioi.lam at oracle.com ioi.lam at oracle.com
Thu Jun 18 22:34:09 UTC 2015


Hi Yumin,

I wonder why the average symbol size didn't change. They are both about 34.25 bytes long.

When I tested the change, -Xshare:dump -XX:+PrintSharedSpaces show about 1.3 bytes reduction per symbol.

Also, could you add some code to print out the statistics of the system dictionary to show if there's any change in the hashtable balance?

Thanks 

> On Jun 18, 2015, at 1:46 PM, Yumin Qi <yumin.qi at oracle.com> wrote:
> 
> Please review the small change for
> 
> bug: https://bugs.openjdk.java.net/browse/JDK-8087143
> webrev: http://cr.openjdk.java.net/~minqi/8087143/webrev01/
> 
> Summary: _identity_hash is an integer in Symbol (SymbolBase), it is used to compute hash bucket index by modulus division of table size. Currently in hotspot, no table size is more than 65535 so we can use short instead.  For case with table size over 65535 we can use the first two bytes of symbol data to be as the upper 16 bits for the calculation but rare cases.
> 
> This is a minor change, also eliminates SymbolBase which seems redundant.  Also add print out SymbolTable statistics under debug flag PrintSystemDictionaryAtExit.
> 
> Tests: JPRT, Specjbb2005.
> 
> The SymbolTable statistics for specjbb2005:
> 
> Before Change:
> SymbolTable statistics:
> Number of buckets       :     20011 =    320176 bytes, avg  16.000
> Number of entries       :     49914 =   1597248 bytes, avg  32.000
> Number of literals      :     49914 =   1709688 bytes, avg  34.253
> Total footprint         :           =   3627112 bytes
> Average bucket size     :     2.494
> Variance of bucket size :     2.483
> Std. dev. of bucket size:     1.576
> Maximum bucket size     :        10
> 
> After Change:
> 
> SymbolTable statistics:
> Number of buckets       :     20011 =    320176 bytes, avg  16.000
> Number of entries       :     49911 =   1597152 bytes, avg  32.000
> Number of literals      :     49911 =   1709544 bytes, avg  34.252
> Total footprint         :           =   3626872 bytes
> Average bucket size     :     2.494
> Variance of bucket size :     2.483
> Std. dev. of bucket size:     1.576
> Maximum bucket size     :        10
> 
> There is no big change for the hashtable balance.
> 
> 
> Thanks
> Yumin


More information about the hotspot-runtime-dev mailing list