src/share/vm/gc_interface/collectedHeap.cpp

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


 111   }
 112 }
 113 
 114 void CollectedHeap::print_heap_after_gc() {
 115   if (PrintHeapAtGC) {
 116     Universe::print_heap_after_gc();
 117   }
 118   if (_gc_heap_log != NULL) {
 119     _gc_heap_log->log_heap_after();
 120   }
 121 }
 122 
 123 void CollectedHeap::register_nmethod(nmethod* nm) {
 124   assert_locked_or_safepoint(CodeCache_lock);
 125 }
 126 
 127 void CollectedHeap::unregister_nmethod(nmethod* nm) {
 128   assert_locked_or_safepoint(CodeCache_lock);
 129 }
 130 











 131 void CollectedHeap::trace_heap(GCWhen::Type when, GCTracer* gc_tracer) {
 132   const GCHeapSummary& heap_summary = create_heap_summary();
 133   const MetaspaceSummary& metaspace_summary = create_metaspace_summary();
 134   gc_tracer->report_gc_heap_summary(when, heap_summary, metaspace_summary);


 135 }
 136 
 137 void CollectedHeap::trace_heap_before_gc(GCTracer* gc_tracer) {
 138   trace_heap(GCWhen::BeforeGC, gc_tracer);
 139 }
 140 
 141 void CollectedHeap::trace_heap_after_gc(GCTracer* gc_tracer) {
 142   trace_heap(GCWhen::AfterGC, gc_tracer);
 143 }
 144 
 145 // Memory state functions.
 146 
 147 
 148 CollectedHeap::CollectedHeap() : _n_par_threads(0)
 149 {
 150   const size_t max_len = size_t(arrayOopDesc::max_array_length(T_INT));
 151   const size_t elements_per_word = HeapWordSize / sizeof(jint);
 152   _filler_array_max_size = align_object_size(filler_array_hdr_size() +
 153                                              max_len / elements_per_word);
 154 




 111   }
 112 }
 113 
 114 void CollectedHeap::print_heap_after_gc() {
 115   if (PrintHeapAtGC) {
 116     Universe::print_heap_after_gc();
 117   }
 118   if (_gc_heap_log != NULL) {
 119     _gc_heap_log->log_heap_after();
 120   }
 121 }
 122 
 123 void CollectedHeap::register_nmethod(nmethod* nm) {
 124   assert_locked_or_safepoint(CodeCache_lock);
 125 }
 126 
 127 void CollectedHeap::unregister_nmethod(nmethod* nm) {
 128   assert_locked_or_safepoint(CodeCache_lock);
 129 }
 130 
 131 void CollectedHeap::trace_metaspace_chunk_free_list(GCWhen::Type when, GCTracer* gc_tracer) {
 132   MetaspaceChunkFreeListSummary chunk_free_list_summary;
 133   for (int i = 0; i < Metaspace::MetadataTypeCount; i++) {
 134     Metaspace::MetadataType mdtype = (Metaspace::MetadataType) i;
 135     if (MetaspaceAux::has_chunk_free_list(mdtype)) {
 136       gc_tracer->report_metaspace_chunk_free_list_summary(when, mdtype,
 137         MetaspaceAux::chunk_free_list_summary(mdtype));
 138     }
 139   }
 140 }
 141 
 142 void CollectedHeap::trace_heap(GCWhen::Type when, GCTracer* gc_tracer) {
 143   const GCHeapSummary& heap_summary = create_heap_summary();
 144   const MetaspaceSummary& metaspace_summary = create_metaspace_summary();
 145   gc_tracer->report_gc_heap_summary(when, heap_summary, metaspace_summary);
 146 
 147   trace_metaspace_chunk_free_list(when, gc_tracer);
 148 }
 149 
 150 void CollectedHeap::trace_heap_before_gc(GCTracer* gc_tracer) {
 151   trace_heap(GCWhen::BeforeGC, gc_tracer);
 152 }
 153 
 154 void CollectedHeap::trace_heap_after_gc(GCTracer* gc_tracer) {
 155   trace_heap(GCWhen::AfterGC, gc_tracer);
 156 }
 157 
 158 // Memory state functions.
 159 
 160 
 161 CollectedHeap::CollectedHeap() : _n_par_threads(0)
 162 {
 163   const size_t max_len = size_t(arrayOopDesc::max_array_length(T_INT));
 164   const size_t elements_per_word = HeapWordSize / sizeof(jint);
 165   _filler_array_max_size = align_object_size(filler_array_hdr_size() +
 166                                              max_len / elements_per_word);
 167