src/share/vm/gc_implementation/shared/gcTrace.cpp

Print this page
rev 6085 : 8036703: Add trace event with statistics for the metaspace chunk free lists


 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;