122 };
123
124 void GCTracer::report_object_count_after_gc(BoolObjectClosure* is_alive_cl) {
125 assert_set_gc_id();
126 assert(is_alive_cl != NULL, "Must supply function to check liveness");
127
128 if (ObjectCountEventSender::should_send_event()) {
129 ResourceMark rm;
130
131 KlassInfoTable cit(false);
132 if (!cit.allocation_failed()) {
133 HeapInspection hi(false, false, false, NULL);
134 hi.populate_table(&cit, is_alive_cl);
135 ObjectCountEventSenderClosure event_sender(_shared_gc_info.id(), cit.size_of_instances_in_words(), Ticks::now());
136 cit.iterate(&event_sender);
137 }
138 }
139 }
140 #endif // INCLUDE_SERVICES
141
142 void GCTracer::report_gc_heap_summary(GCWhen::Type when, const GCHeapSummary& heap_summary, const MetaspaceSummary& meta_space_summary) const {
143 assert_set_gc_id();
144
145 send_gc_heap_summary_event(when, heap_summary);
146 send_meta_space_summary_event(when, meta_space_summary);
147 }
148
149 void YoungGCTracer::report_gc_end_impl(const Ticks& timestamp, TimePartitions* time_partitions) {
150 assert_set_gc_id();
151 assert(_tenuring_threshold != UNSET_TENURING_THRESHOLD, "Tenuring threshold has not been reported");
152
153 GCTracer::report_gc_end_impl(timestamp, time_partitions);
154 send_young_gc_event();
155
156 _tenuring_threshold = UNSET_TENURING_THRESHOLD;
157 }
158
159 void YoungGCTracer::report_promotion_failed(const PromotionFailedInfo& pf_info) {
160 assert_set_gc_id();
161
162 send_promotion_failed_event(pf_info);
163 }
164
165 void YoungGCTracer::report_tenuring_threshold(const uint tenuring_threshold) {
166 _tenuring_threshold = tenuring_threshold;
|
122 };
123
124 void GCTracer::report_object_count_after_gc(BoolObjectClosure* is_alive_cl) {
125 assert_set_gc_id();
126 assert(is_alive_cl != NULL, "Must supply function to check liveness");
127
128 if (ObjectCountEventSender::should_send_event()) {
129 ResourceMark rm;
130
131 KlassInfoTable cit(false);
132 if (!cit.allocation_failed()) {
133 HeapInspection hi(false, false, false, NULL);
134 hi.populate_table(&cit, is_alive_cl);
135 ObjectCountEventSenderClosure event_sender(_shared_gc_info.id(), cit.size_of_instances_in_words(), Ticks::now());
136 cit.iterate(&event_sender);
137 }
138 }
139 }
140 #endif // INCLUDE_SERVICES
141
142 void GCTracer::report_gc_heap_summary(GCWhen::Type when, const GCHeapSummary& heap_summary) const {
143 assert_set_gc_id();
144
145 send_gc_heap_summary_event(when, heap_summary);
146 }
147
148 void GCTracer::report_metaspace_summary(GCWhen::Type when, const MetaspaceSummary& summary) const {
149 assert_set_gc_id();
150
151 send_meta_space_summary_event(when, summary);
152
153 send_metaspace_chunk_free_list_summary(when, Metaspace::NonClassType, summary.metaspace_chunk_free_list_summary());
154 if (UseCompressedClassPointers) {
155 send_metaspace_chunk_free_list_summary(when, Metaspace::ClassType, summary.class_chunk_free_list_summary());
156 }
157 }
158
159 void YoungGCTracer::report_gc_end_impl(const Ticks& timestamp, TimePartitions* time_partitions) {
160 assert_set_gc_id();
161 assert(_tenuring_threshold != UNSET_TENURING_THRESHOLD, "Tenuring threshold has not been reported");
162
163 GCTracer::report_gc_end_impl(timestamp, time_partitions);
164 send_young_gc_event();
165
166 _tenuring_threshold = UNSET_TENURING_THRESHOLD;
167 }
168
169 void YoungGCTracer::report_promotion_failed(const PromotionFailedInfo& pf_info) {
170 assert_set_gc_id();
171
172 send_promotion_failed_event(pf_info);
173 }
174
175 void YoungGCTracer::report_tenuring_threshold(const uint tenuring_threshold) {
176 _tenuring_threshold = tenuring_threshold;
|