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: