src/share/vm/memory/heapInspection.hpp

Print this page
rev 4462 : 8012086: The object count event should only send events for instances occupying more than 0.5% of the heap

*** 24,33 **** --- 24,34 ---- #ifndef SHARE_VM_MEMORY_HEAPINSPECTION_HPP #define SHARE_VM_MEMORY_HEAPINSPECTION_HPP #include "memory/allocation.inline.hpp" + #include "memory/klassInfoClosure.hpp" #include "oops/oop.inline.hpp" // HeapInspection
*** 62,77 **** void set_words(size_t wds) { _instance_words = wds; } int compare(KlassInfoEntry* e1, KlassInfoEntry* e2); void print_on(outputStream* st) const; }; - class KlassInfoClosure: public StackObj { - public: - // Called for each KlassInfoEntry. - virtual void do_cinfo(KlassInfoEntry* cie) = 0; - }; - class KlassInfoBucket: public CHeapObj<mtInternal> { private: KlassInfoEntry* _list; KlassInfoEntry* list() { return _list; } void set_list(KlassInfoEntry* l) { _list = l; } --- 63,72 ----
*** 84,93 **** --- 79,89 ---- class KlassInfoTable: public StackObj { private: int _size; static const int _num_buckets = 20011; + size_t _size_of_instances_in_words; // An aligned reference address (typically the least // address in the perm gen) used for hashing klass // objects. HeapWord* _ref;
*** 100,109 **** --- 96,106 ---- KlassInfoTable(HeapWord* ref); ~KlassInfoTable(); bool record_instance(const oop obj); void iterate(KlassInfoClosure* cic); bool allocation_failed() { return _buckets == NULL; } + size_t size_of_instances_in_words() const; }; class KlassInfoHisto : public StackObj { private: GrowableArray<KlassInfoEntry*>* _elements;
*** 123,134 **** class HeapInspection : public AllStatic { public: static void heap_inspection(outputStream* st, bool need_prologue); ! static size_t instance_inspection(KlassInfoTable* cit, ! KlassInfoClosure* cl, bool need_prologue, BoolObjectClosure* filter = NULL); static HeapWord* start_of_perm_gen(); static void find_instances_at_safepoint(klassOop k, GrowableArray<oop>* result); private: --- 120,130 ---- class HeapInspection : public AllStatic { public: static void heap_inspection(outputStream* st, bool need_prologue); ! static size_t populate_table(KlassInfoTable* cit, bool need_prologue, BoolObjectClosure* filter = NULL); static HeapWord* start_of_perm_gen(); static void find_instances_at_safepoint(klassOop k, GrowableArray<oop>* result); private: