src/share/vm/memory/heapInspection.hpp

Print this page




 250 
 251   class AllClassesFinder : public KlassClosure {
 252     KlassInfoTable *_table;
 253    public:
 254     AllClassesFinder(KlassInfoTable* table) : _table(table) {}
 255     virtual void do_klass(Klass* k);
 256   };
 257 
 258  public:
 259   KlassInfoTable(bool add_all_classes);
 260   ~KlassInfoTable();
 261   bool record_instance(const oop obj);
 262   void iterate(KlassInfoClosure* cic);
 263   bool allocation_failed() { return _buckets == NULL; }
 264   size_t size_of_instances_in_words() const;
 265 
 266   friend class KlassInfoHisto;
 267   friend class KlassHierarchy;
 268 };
 269 
 270 class KlassHierarchy : public StackObj {
 271  public:
 272   KlassHierarchy(KlassInfoTable* cit, const char* title);
 273   ~KlassHierarchy();
 274   static void print_class_hierarchy(outputStream* st, bool print_interfaces,  bool print_subclasses,
 275                                     char* classname);
 276 
 277  private:
 278   static void set_do_print_for_class_hierarchy(KlassInfoEntry* cie, KlassInfoTable* cit,
 279                                                bool print_subclasse); 
 280   static void print_class(outputStream* st, KlassInfoEntry* cie, bool print_subclasses);
 281 };
 282 
 283 class KlassInfoHisto : public StackObj {
 284  private:
 285   static const int _histo_initial_size = 1000;
 286   KlassInfoTable *_cit;
 287   GrowableArray<KlassInfoEntry*>* _elements;
 288   GrowableArray<KlassInfoEntry*>* elements() const { return _elements; }
 289   const char* _title;
 290   const char* title() const { return _title; }
 291   static int sort_helper(KlassInfoEntry** e1, KlassInfoEntry** e2);
 292   void print_elements(outputStream* st) const;
 293   void print_class_stats(outputStream* st, bool csv_format, const char *columns);




 250 
 251   class AllClassesFinder : public KlassClosure {
 252     KlassInfoTable *_table;
 253    public:
 254     AllClassesFinder(KlassInfoTable* table) : _table(table) {}
 255     virtual void do_klass(Klass* k);
 256   };
 257 
 258  public:
 259   KlassInfoTable(bool add_all_classes);
 260   ~KlassInfoTable();
 261   bool record_instance(const oop obj);
 262   void iterate(KlassInfoClosure* cic);
 263   bool allocation_failed() { return _buckets == NULL; }
 264   size_t size_of_instances_in_words() const;
 265 
 266   friend class KlassInfoHisto;
 267   friend class KlassHierarchy;
 268 };
 269 
 270 class KlassHierarchy : AllStatic {
 271  public:


 272   static void print_class_hierarchy(outputStream* st, bool print_interfaces,  bool print_subclasses,
 273                                     char* classname);
 274 
 275  private:
 276   static void set_do_print_for_class_hierarchy(KlassInfoEntry* cie, KlassInfoTable* cit,
 277                                                bool print_subclasse); 
 278   static void print_class(outputStream* st, KlassInfoEntry* cie, bool print_subclasses);
 279 };
 280 
 281 class KlassInfoHisto : public StackObj {
 282  private:
 283   static const int _histo_initial_size = 1000;
 284   KlassInfoTable *_cit;
 285   GrowableArray<KlassInfoEntry*>* _elements;
 286   GrowableArray<KlassInfoEntry*>* elements() const { return _elements; }
 287   const char* _title;
 288   const char* title() const { return _title; }
 289   static int sort_helper(KlassInfoEntry** e1, KlassInfoEntry** e2);
 290   void print_elements(outputStream* st) const;
 291   void print_class_stats(outputStream* st, bool csv_format, const char *columns);