Mercurial > hg > graal-jvmci-8
comparison src/share/vm/classfile/symbolTable.cpp @ 10312:a5d6f0c3585f
8014262: PrintStringTableStatistics should include more footprint info
Summary: Added info for the string/symbol objects and the hash entries
Reviewed-by: coleenp, rbackman
author | iklam |
---|---|
date | Sat, 18 May 2013 20:41:01 -0700 |
parents | f258c5828eb8 |
children | 95c00927be11 |
comparison
equal
deleted
inserted
replaced
10311:386b77bf6427 | 10312:a5d6f0c3585f |
---|---|
33 #include "memory/gcLocker.inline.hpp" | 33 #include "memory/gcLocker.inline.hpp" |
34 #include "oops/oop.inline.hpp" | 34 #include "oops/oop.inline.hpp" |
35 #include "oops/oop.inline2.hpp" | 35 #include "oops/oop.inline2.hpp" |
36 #include "runtime/mutexLocker.hpp" | 36 #include "runtime/mutexLocker.hpp" |
37 #include "utilities/hashtable.inline.hpp" | 37 #include "utilities/hashtable.inline.hpp" |
38 #include "utilities/numberSeq.hpp" | |
39 | 38 |
40 // -------------------------------------------------------------------------- | 39 // -------------------------------------------------------------------------- |
41 | 40 |
42 SymbolTable* SymbolTable::_the_table = NULL; | 41 SymbolTable* SymbolTable::_the_table = NULL; |
43 // Static arena for symbols that are not deallocated | 42 // Static arena for symbols that are not deallocated |
449 } | 448 } |
450 } | 449 } |
451 } | 450 } |
452 | 451 |
453 void SymbolTable::dump(outputStream* st) { | 452 void SymbolTable::dump(outputStream* st) { |
454 NumberSeq summary; | 453 the_table()->dump_table(st, "SymbolTable"); |
455 for (int i = 0; i < the_table()->table_size(); ++i) { | |
456 int count = 0; | |
457 for (HashtableEntry<Symbol*, mtSymbol>* e = the_table()->bucket(i); | |
458 e != NULL; e = e->next()) { | |
459 count++; | |
460 } | |
461 summary.add((double)count); | |
462 } | |
463 st->print_cr("SymbolTable statistics:"); | |
464 st->print_cr("Number of buckets : %7d", summary.num()); | |
465 st->print_cr("Average bucket size : %7.0f", summary.avg()); | |
466 st->print_cr("Variance of bucket size : %7.0f", summary.variance()); | |
467 st->print_cr("Std. dev. of bucket size: %7.0f", summary.sd()); | |
468 st->print_cr("Maximum bucket size : %7.0f", summary.maximum()); | |
469 } | 454 } |
470 | 455 |
471 | 456 |
472 //--------------------------------------------------------------------------- | 457 //--------------------------------------------------------------------------- |
473 // Non-product code | 458 // Non-product code |
812 } | 797 } |
813 } | 798 } |
814 } | 799 } |
815 | 800 |
816 void StringTable::dump(outputStream* st) { | 801 void StringTable::dump(outputStream* st) { |
817 NumberSeq summary; | 802 the_table()->dump_table(st, "StringTable"); |
818 for (int i = 0; i < the_table()->table_size(); ++i) { | |
819 HashtableEntry<oop, mtSymbol>* p = the_table()->bucket(i); | |
820 int count = 0; | |
821 for ( ; p != NULL; p = p->next()) { | |
822 count++; | |
823 } | |
824 summary.add((double)count); | |
825 } | |
826 st->print_cr("StringTable statistics:"); | |
827 st->print_cr("Number of buckets : %7d", summary.num()); | |
828 st->print_cr("Average bucket size : %7.0f", summary.avg()); | |
829 st->print_cr("Variance of bucket size : %7.0f", summary.variance()); | |
830 st->print_cr("Std. dev. of bucket size: %7.0f", summary.sd()); | |
831 st->print_cr("Maximum bucket size : %7.0f", summary.maximum()); | |
832 } | 803 } |
833 | 804 |
834 | 805 |
835 // Create a new table and using alternate hash code, populate the new table | 806 // Create a new table and using alternate hash code, populate the new table |
836 // with the existing strings. Set flag to use the alternate hash code afterwards. | 807 // with the existing strings. Set flag to use the alternate hash code afterwards. |