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
|