| Item | Before | After | Delta | Percentage |
| app.jsa | 107966464 | 107540480 | -425984 | -0.39 |
| Symbols in RO | 13215840 | 12791728 | -424112 | -0.32 |
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 |
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 |