60 bool _dead_samples;
61
62 // Lifecycle
63 explicit ObjectSampler(size_t size);
64 ~ObjectSampler();
65 static bool create(size_t size);
66 static bool is_created();
67 static ObjectSampler* sampler();
68 static void destroy();
69
70 // For operations that require exclusive access (non-safepoint)
71 static ObjectSampler* acquire();
72 static void release();
73
74 // Stacktrace
75 static void fill_stacktrace(JfrStackTrace* stacktrace, JavaThread* thread);
76 traceid stacktrace_id(const JfrStackTrace* stacktrace, JavaThread* thread);
77
78 // Sampling
79 static void sample(HeapWord* object, size_t size, JavaThread* thread);
80 void add(HeapWord* object, size_t size, traceid thread_id, JfrStackTrace* stacktrace, JavaThread* thread);
81 void scavenge();
82 void remove_dead(ObjectSample* sample);
83
84 // Called by GC
85 static void oops_do(BoolObjectClosure* is_alive, OopClosure* f);
86
87 const ObjectSample* item_at(int index) const;
88 ObjectSample* item_at(int index);
89 int item_count() const;
90 const ObjectSample* first() const;
91 const ObjectSample* last() const;
92 const ObjectSample* last_resolved() const;
93 void set_last_resolved(const ObjectSample* sample);
94 const JfrTicks& last_sweep() const;
95 };
96
97 #endif // SHARE_VM_LEAKPROFILER_SAMPLING_OBJECTSAMPLER_HPP
|
60 bool _dead_samples;
61
62 // Lifecycle
63 explicit ObjectSampler(size_t size);
64 ~ObjectSampler();
65 static bool create(size_t size);
66 static bool is_created();
67 static ObjectSampler* sampler();
68 static void destroy();
69
70 // For operations that require exclusive access (non-safepoint)
71 static ObjectSampler* acquire();
72 static void release();
73
74 // Stacktrace
75 static void fill_stacktrace(JfrStackTrace* stacktrace, JavaThread* thread);
76 traceid stacktrace_id(const JfrStackTrace* stacktrace, JavaThread* thread);
77
78 // Sampling
79 static void sample(HeapWord* object, size_t size, JavaThread* thread);
80 void add(HeapWord* object, size_t size, traceid thread_id/*, JfrStackTrace* stacktrace*/, JavaThread* thread);
81 void scavenge();
82 void remove_dead(ObjectSample* sample);
83
84 // Called by GC
85 static void oops_do(BoolObjectClosure* is_alive, OopClosure* f);
86
87 const ObjectSample* item_at(int index) const;
88 ObjectSample* item_at(int index);
89 int item_count() const;
90 const ObjectSample* first() const;
91 const ObjectSample* last() const;
92 const ObjectSample* last_resolved() const;
93 void set_last_resolved(const ObjectSample* sample);
94 const JfrTicks& last_sweep() const;
95 };
96
97 #endif // SHARE_VM_LEAKPROFILER_SAMPLING_OBJECTSAMPLER_HPP
|