src/share/vm/classfile/systemDictionary.cpp

Print this page




2751   static int methoddata_size; // size of methodData objects in words
2752 
2753   static void do_class(klassOop k) {
2754     nclasses++;
2755     class_size += k->size();
2756     if (k->klass_part()->oop_is_instance()) {
2757       instanceKlass* ik = (instanceKlass*)k->klass_part();
2758       class_size += ik->methods()->size();
2759       class_size += ik->constants()->size();
2760       class_size += ik->local_interfaces()->size();
2761       class_size += ik->transitive_interfaces()->size();
2762       // We do not have to count implementors, since we only store one!
2763       class_size += ik->all_fields_count() * FieldInfo::field_slots;
2764     }
2765   }
2766 
2767   static void do_method(methodOop m) {
2768     nmethods++;
2769     method_size += m->size();
2770     // class loader uses same objArray for empty vectors, so don't count these
2771     if (m->exception_table()->length() != 0)   method_size += m->exception_table()->size();
2772     if (m->has_stackmap_table()) {
2773       method_size += m->stackmap_data()->size();
2774     }
2775 
2776     methodDataOop mdo = m->method_data();
2777     if (mdo != NULL) {
2778       nmethoddata++;
2779       methoddata_size += mdo->size();
2780     }
2781   }
2782 
2783  public:
2784   static void print() {
2785     SystemDictionary::classes_do(do_class);
2786     SystemDictionary::methods_do(do_method);
2787     tty->print_cr("Class statistics:");
2788     tty->print_cr("%d classes (%d bytes)", nclasses, class_size * oopSize);
2789     tty->print_cr("%d methods (%d bytes = %d base + %d debug info)", nmethods,
2790                   (method_size + debug_size) * oopSize, method_size * oopSize, debug_size * oopSize);
2791     tty->print_cr("%d methoddata (%d bytes)", nmethoddata, methoddata_size * oopSize);




2751   static int methoddata_size; // size of methodData objects in words
2752 
2753   static void do_class(klassOop k) {
2754     nclasses++;
2755     class_size += k->size();
2756     if (k->klass_part()->oop_is_instance()) {
2757       instanceKlass* ik = (instanceKlass*)k->klass_part();
2758       class_size += ik->methods()->size();
2759       class_size += ik->constants()->size();
2760       class_size += ik->local_interfaces()->size();
2761       class_size += ik->transitive_interfaces()->size();
2762       // We do not have to count implementors, since we only store one!
2763       class_size += ik->all_fields_count() * FieldInfo::field_slots;
2764     }
2765   }
2766 
2767   static void do_method(methodOop m) {
2768     nmethods++;
2769     method_size += m->size();
2770     // class loader uses same objArray for empty vectors, so don't count these

2771     if (m->has_stackmap_table()) {
2772       method_size += m->stackmap_data()->size();
2773     }
2774 
2775     methodDataOop mdo = m->method_data();
2776     if (mdo != NULL) {
2777       nmethoddata++;
2778       methoddata_size += mdo->size();
2779     }
2780   }
2781 
2782  public:
2783   static void print() {
2784     SystemDictionary::classes_do(do_class);
2785     SystemDictionary::methods_do(do_method);
2786     tty->print_cr("Class statistics:");
2787     tty->print_cr("%d classes (%d bytes)", nclasses, class_size * oopSize);
2788     tty->print_cr("%d methods (%d bytes = %d base + %d debug info)", nmethods,
2789                   (method_size + debug_size) * oopSize, method_size * oopSize, debug_size * oopSize);
2790     tty->print_cr("%d methoddata (%d bytes)", nmethoddata, methoddata_size * oopSize);