< prev index next >

src/share/vm/oops/klassVtable.cpp

Print this page




1546 
1547 class VtableStats : AllStatic {
1548  public:
1549   static int no_klasses;                // # classes with vtables
1550   static int no_array_klasses;          // # array classes
1551   static int no_instance_klasses;       // # instanceKlasses
1552   static int sum_of_vtable_len;         // total # of vtable entries
1553   static int sum_of_array_vtable_len;   // total # of vtable entries in array klasses only
1554   static int fixed;                     // total fixed overhead in bytes
1555   static int filler;                    // overhead caused by filler bytes
1556   static int entries;                   // total bytes consumed by vtable entries
1557   static int array_entries;             // total bytes consumed by array vtable entries
1558 
1559   static void do_class(Klass* k) {
1560     Klass* kl = k;
1561     klassVtable* vt = kl->vtable();
1562     if (vt == NULL) return;
1563     no_klasses++;
1564     if (kl->is_instance_klass()) {
1565       no_instance_klasses++;
1566       kl->array_klasses_do(do_class);
1567     }
1568     if (kl->is_array_klass()) {
1569       no_array_klasses++;
1570       sum_of_array_vtable_len += vt->length();
1571     }
1572     sum_of_vtable_len += vt->length();
1573   }
1574 
1575   static void compute() {
1576     SystemDictionary::classes_do(do_class);
1577     fixed  = no_klasses * oopSize;      // vtable length
1578     // filler size is a conservative approximation
1579     filler = oopSize * (no_klasses - no_instance_klasses) * (sizeof(InstanceKlass) - sizeof(ArrayKlass) - 1);
1580     entries = sizeof(vtableEntry) * sum_of_vtable_len;
1581     array_entries = sizeof(vtableEntry) * sum_of_array_vtable_len;
1582   }
1583 };
1584 
1585 int VtableStats::no_klasses = 0;
1586 int VtableStats::no_array_klasses = 0;
1587 int VtableStats::no_instance_klasses = 0;
1588 int VtableStats::sum_of_vtable_len = 0;
1589 int VtableStats::sum_of_array_vtable_len = 0;
1590 int VtableStats::fixed = 0;
1591 int VtableStats::filler = 0;
1592 int VtableStats::entries = 0;
1593 int VtableStats::array_entries = 0;
1594 
1595 void klassVtable::print_statistics() {
1596   ResourceMark rm;




1546 
1547 class VtableStats : AllStatic {
1548  public:
1549   static int no_klasses;                // # classes with vtables
1550   static int no_array_klasses;          // # array classes
1551   static int no_instance_klasses;       // # instanceKlasses
1552   static int sum_of_vtable_len;         // total # of vtable entries
1553   static int sum_of_array_vtable_len;   // total # of vtable entries in array klasses only
1554   static int fixed;                     // total fixed overhead in bytes
1555   static int filler;                    // overhead caused by filler bytes
1556   static int entries;                   // total bytes consumed by vtable entries
1557   static int array_entries;             // total bytes consumed by array vtable entries
1558 
1559   static void do_class(Klass* k) {
1560     Klass* kl = k;
1561     klassVtable* vt = kl->vtable();
1562     if (vt == NULL) return;
1563     no_klasses++;
1564     if (kl->is_instance_klass()) {
1565       no_instance_klasses++;

1566     }
1567     if (kl->is_array_klass()) {
1568       no_array_klasses++;
1569       sum_of_array_vtable_len += vt->length();
1570     }
1571     sum_of_vtable_len += vt->length();
1572   }
1573 
1574   static void compute() {
1575     ClassLoaderDataGraph::classes_do(do_class);
1576     fixed  = no_klasses * oopSize;      // vtable length
1577     // filler size is a conservative approximation
1578     filler = oopSize * (no_klasses - no_instance_klasses) * (sizeof(InstanceKlass) - sizeof(ArrayKlass) - 1);
1579     entries = sizeof(vtableEntry) * sum_of_vtable_len;
1580     array_entries = sizeof(vtableEntry) * sum_of_array_vtable_len;
1581   }
1582 };
1583 
1584 int VtableStats::no_klasses = 0;
1585 int VtableStats::no_array_klasses = 0;
1586 int VtableStats::no_instance_klasses = 0;
1587 int VtableStats::sum_of_vtable_len = 0;
1588 int VtableStats::sum_of_array_vtable_len = 0;
1589 int VtableStats::fixed = 0;
1590 int VtableStats::filler = 0;
1591 int VtableStats::entries = 0;
1592 int VtableStats::array_entries = 0;
1593 
1594 void klassVtable::print_statistics() {
1595   ResourceMark rm;


< prev index next >