shared archive file

Item Before After Delta Percentage
app.jsa 107966464 107540480 -425984 -0.39
Symbols in RO 13215840 12791728 -424112 -0.32

Dictionary Distribution

        The Shared System Dictionary and System Dictionary data obtained after App started and run for a while,  
        the footprint(s)  for SystemDictionary are different --that depends how many classes loaded at that time.
        The SharedDictionary showed more variant bucket(s) size.
        The last row, run with -XX:+PrintSharedArchiveAndExit which exit after classes in shared archive loaded, 
        then print out and exit right away. The max bucket size reduced --- shown improvement in table balance.
        This is single run, does not have statistical significance, but we can see after fix, there is no major 
        concern about the table balance --- if we regard the App as a no-small application.   
    
Name Before After
Shared System Dictionary Number of buckets : 1009 = 16144 bytes, avg 16.000
Number of entries : 14128 = 452096 bytes, avg 32.000
Number of literals : 14128 = 1233336 bytes, avg 87.297
Total footprint : = 1701576 bytes
Average bucket size : 14.002
Variance of bucket size : 13.213
Std. dev. of bucket size: 3.635
Maximum bucket size : 26
Number of buckets : 1009 = 16144 bytes, avg 16.000
Number of entries : 14128 = 452096 bytes, avg 32.000
Number of literals : 14128 = 1233336 bytes, avg 87.297
Total footprint : = 1701576 bytes
Average bucket size : 14.002
Variance of bucket size : 14.464
Std. dev. of bucket size: 3.803
Maximum bucket size : 29
System Dictionary Number of buckets : 1009 = 16144 bytes, avg 16.000
Number of entries : 19451 = 622432 bytes, avg 32.000
Number of literals : 19451 = 1696130 bytes, avg 87.200
Total footprint : = 2334706 bytes
Average bucket size : 19.278
Variance of bucket size : 20.426
Std. dev. of bucket size: 4.520
Maximum bucket size : 33
Number of buckets : 1009 = 16144 bytes, avg 16.000
Number of entries : 19394 = 620608 bytes, avg 32.000
Number of literals : 19394 = 1692461 bytes, avg 87.267
Total footprint : = 2329213 bytes
Average bucket size : 19.221
Variance of bucket size : 19.149
Std. dev. of bucket size: 4.376
Maximum bucket size : 36
SymbolTable statistics Number of buckets : 20011 = 320176 bytes, avg 16.000
Number of entries : 77392 = 2476544 bytes, avg 32.000
Number of literals : 77392 = 4172824 bytes, avg 53.918
Total footprint : = 6969544 bytes
Average bucket size : 3.867
Variance of bucket size : 3.826
Std. dev. of bucket size: 1.956
Maximum bucket size : 13
Number of buckets : 20011 = 320176 bytes, avg 16.000
Number of entries : 77140 = 2468480 bytes, avg 32.000
Number of literals : 77140 = 4008656 bytes, avg 51.966
Total footprint : = 6797312 bytes
Average bucket size : 3.855
Variance of bucket size : 3.816
Std. dev. of bucket size: 1.954
Maximum bucket size : 13
StringTable statistics Number of buckets : 60013 = 960208 bytes, avg 16.000
Number of entries : 64719 = 2071008 bytes, avg 32.000
Number of literals : 64719 = 8011952 bytes, avg 123.796
Total footprint : = 11043168 bytes
Average bucket size : 1.078
Variance of bucket size : 1.069
Std. dev. of bucket size: 1.034
Maximum bucket size : 7
Number of buckets : 60013 = 960208 bytes, avg 16.000
Number of entries : 61390 = 1964480 bytes, avg 32.000
Number of literals : 61390 = 7730728 bytes, avg 125.928
Total footprint : = 10655416 bytes
Average bucket size : 1.023
Variance of bucket size : 1.015
Std. dev. of bucket size: 1.008
Maximum bucket size : 7
Shared Dictionary data with -XX:+PrintSharedArchiveAndExit Number of buckets : 1009 = 16144 bytes, avg 16.000
Number of entries : 14128 = 452096 bytes, avg 32.000
Number of literals : 14128 = 1233336 bytes, avg 87.297
Total footprint : = 1701576 bytes
Average bucket size : 14.002
Variance of bucket size : 12.985
Std. dev. of bucket size: 3.603
Maximum bucket size : 28
Number of buckets : 1009 = 16144 bytes, avg 16.000
Number of entries : 14128 = 452096 bytes, avg 32.000
Number of literals : 14128 = 1233336 bytes, avg 87.297
Total footprint : = 1701576 bytes
Average bucket size : 14.002
Variance of bucket size : 14.327
Std. dev. of bucket size: 3.785
Maximum bucket size : 25

Extra test for changing bucket size

        The data was obtained by using of -XX:PredictedLoadedClassCount=NUMBER
        By changing the numbers, we can see how the data distribution chnaged.
        Code changes for this test:
        --- a/src/share/vm/classfile/systemDictionary.cpp       Thu Jul 09 15:39:05 2015 -0400

+++ b/src/share/vm/classfile/systemDictionary.cpp       Fri Jul 10 15:22:48 2015 -0700
@@ -1146,9 +1146,10 @@
 #if INCLUDE_CDS
 void SystemDictionary::set_shared_dictionary(HashtableBucket* t, int length,
                                              int number_of_entries) {
-  assert(length == _nof_buckets * sizeof(HashtableBucket),
+  int nof_buckets = calculate_systemdictionary_size(PredictedLoadedClassCount);
+  assert(length == nof_buckets * (int)sizeof(HashtableBucket),
          "bad shared dictionary size.");
-  _shared_dictionary = new Dictionary(_nof_buckets, t, number_of_entries);
+  _shared_dictionary = new Dictionary(nof_buckets, t, number_of_entries);
 }
    
PredictedLoadedClassCount Before After
default Number of buckets : 1009 = 16144 bytes, avg 16.000
Number of entries : 2418 = 77376 bytes, avg 32.000
Number of literals : 2418 = 1932712 bytes, avg 799.302
Total footprint : = 2026232 bytes
Average bucket size : 2.396
Variance of bucket size : 2.443
Std. dev. of bucket size: 1.563
Maximum bucket size : 9
Number of buckets : 1009 = 16144 bytes, avg 16.000
Number of entries : 2418 = 77376 bytes, avg 32.000
Number of literals : 2418 = 1932712 bytes, avg 799.302
Total footprint : = 2026232 bytes
Average bucket size : 2.396
Variance of bucket size : 2.378
Std. dev. of bucket size: 1.542
Maximum bucket size : 9
5000 Number of buckets : 2017 = 32272 bytes, avg 16.000
Number of entries : 2418 = 77376 bytes, avg 32.000
Number of literals : 2418 = 1932712 bytes, avg 799.302
Total footprint : = 2042360 bytes
Average bucket size : 1.199
Variance of bucket size : 1.174
Std. dev. of bucket size: 1.083
Maximum bucket size : 6
Number of buckets : 2017 = 32272 bytes, avg 16.000
Number of entries : 2418 = 77376 bytes, avg 32.000
Number of literals : 2418 = 1932712 bytes, avg 799.302
Total footprint : = 2042360 bytes
Average bucket size : 1.199
Variance of bucket size : 1.162
Std. dev. of bucket size: 1.078
Maximum bucket size : 6
10000 Number of buckets : 4049 = 64784 bytes, avg 16.000
Number of entries : 2418 = 77376 bytes, avg 32.000
Number of literals : 2418 = 1932712 bytes, avg 799.302
Total footprint : = 2074872 bytes
Average bucket size : 0.597
Variance of bucket size : 0.598
Std. dev. of bucket size: 0.773
Maximum bucket size : 5
Number of buckets : 4049 = 64784 bytes, avg 16.000
Number of entries : 2418 = 77376 bytes, avg 32.000
Number of literals : 2418 = 1932712 bytes, avg 799.302
Total footprint : = 2074872 bytes
Average bucket size : 0.597
Variance of bucket size : 0.595
Std. dev. of bucket size: 0.771
Maximum bucket size : 5
20000 Number of buckets : 10103 = 161648 bytes, avg 16.000
Number of entries : 2418 = 77376 bytes, avg 32.000
Number of literals : 2418 = 1932712 bytes, avg 799.302
Total footprint : = 2171736 bytes
Average bucket size : 0.239
Variance of bucket size : 0.241
Std. dev. of bucket size: 0.491
Maximum bucket size : 4
Number of buckets : 10103 = 161648 bytes, avg 16.000
Number of entries : 2418 = 77376 bytes, avg 32.000
Number of literals : 2418 = 1932712 bytes, avg 799.302
Total footprint : = 2171736 bytes
Average bucket size : 0.239
Variance of bucket size : 0.244
Std. dev. of bucket size: 0.494
Maximum bucket size : 4
30000 Number of buckets : 10103 = 161648 bytes, avg 16.000
Number of entries : 2418 = 77376 bytes, avg 32.000
Number of literals : 2418 = 1932712 bytes, avg 799.302
Total footprint : = 2171736 bytes
Average bucket size : 0.239
Variance of bucket size : 0.241
Std. dev. of bucket size: 0.491
Maximum bucket size : 4
Number of buckets : 10103 = 161648 bytes, avg 16.000
Number of entries : 2418 = 77376 bytes, avg 32.000
Number of literals : 2418 = 1932712 bytes, avg 799.302
Total footprint : = 2171736 bytes
Average bucket size : 0.239
Variance of bucket size : 0.244
Std. dev. of bucket size: 0.494
Maximum bucket size : 4
40000 Number of buckets : 20201 = 323216 bytes, avg 16.000
Number of entries : 2418 = 77376 bytes, avg 32.000
Number of literals : 2418 = 1932712 bytes, avg 799.302
Total footprint : = 2333304 bytes
Average bucket size : 0.120
Variance of bucket size : 0.118
Std. dev. of bucket size: 0.344
Maximum bucket size : 3
Number of buckets : 20201 = 323216 bytes, avg 16.000
Number of entries : 2418 = 77376 bytes, avg 32.000
Number of literals : 2418 = 1932712 bytes, avg 799.302
Total footprint : = 2333304 bytes
Average bucket size : 0.120
Variance of bucket size : 0.119
Std. dev. of bucket size: 0.345
Maximum bucket size : 3
50000 Number of buckets : 20201 = 323216 bytes, avg 16.000
Number of entries : 2418 = 77376 bytes, avg 32.000
Number of literals : 2418 = 1932712 bytes, avg 799.302
Total footprint : = 2333304 bytes
Average bucket size : 0.120
Variance of bucket size : 0.118
Std. dev. of bucket size: 0.344
Maximum bucket size : 3
Number of buckets : 20201 = 323216 bytes, avg 16.000
Number of entries : 2418 = 77376 bytes, avg 32.000
Number of literals : 2418 = 1932712 bytes, avg 799.302
Total footprint : = 2333304 bytes
Average bucket size : 0.120
Variance of bucket size : 0.119
Std. dev. of bucket size: 0.345
Maximum bucket size : 3
60000 Number of buckets : 20201 = 323216 bytes, avg 16.000
Number of entries : 2418 = 77376 bytes, avg 32.000
Number of literals : 2418 = 1932712 bytes, avg 799.302
Total footprint : = 2333304 bytes
Average bucket size : 0.120
Variance of bucket size : 0.118
Std. dev. of bucket size: 0.344
Maximum bucket size : 3
Number of buckets : 20201 = 323216 bytes, avg 16.000
Number of entries : 2418 = 77376 bytes, avg 32.000
Number of literals : 2418 = 1932712 bytes, avg 799.302
Total footprint : = 2333304 bytes
Average bucket size : 0.120
Variance of bucket size : 0.119
Std. dev. of bucket size: 0.345
Maximum bucket size : 3
70000 Number of buckets : 40423 = 646768 bytes, avg 16.000
Number of entries : 2418 = 77376 bytes, avg 32.000
Number of literals : 2418 = 1932712 bytes, avg 799.302
Total footprint : = 2656856 bytes
Average bucket size : 0.060
Variance of bucket size : 0.060
Std. dev. of bucket size: 0.245
Maximum bucket size : 3
Number of buckets : 40423 = 646768 bytes, avg 16.000
Number of entries : 2418 = 77376 bytes, avg 32.000
Number of literals : 2418 = 1932712 bytes, avg 799.302
Total footprint : = 2656856 bytes
Average bucket size : 0.060
Variance of bucket size : 0.060
Std. dev. of bucket size: 0.245
Maximum bucket size : 2