80
81 GCHeapSummary CollectedHeap::create_heap_summary() {
82 VirtualSpaceSummary heap_space = create_heap_space_summary();
83 return GCHeapSummary(heap_space, used());
84 }
85
86 MetaspaceSummary CollectedHeap::create_metaspace_summary() {
87 const MetaspaceSizes meta_space(
88 MetaspaceAux::allocated_capacity_bytes(),
89 MetaspaceAux::allocated_used_bytes(),
90 MetaspaceAux::reserved_bytes());
91 const MetaspaceSizes data_space(
92 MetaspaceAux::allocated_capacity_bytes(Metaspace::NonClassType),
93 MetaspaceAux::allocated_used_bytes(Metaspace::NonClassType),
94 MetaspaceAux::reserved_bytes(Metaspace::NonClassType));
95 const MetaspaceSizes class_space(
96 MetaspaceAux::allocated_capacity_bytes(Metaspace::ClassType),
97 MetaspaceAux::allocated_used_bytes(Metaspace::ClassType),
98 MetaspaceAux::reserved_bytes(Metaspace::ClassType));
99
100 return MetaspaceSummary(MetaspaceGC::capacity_until_GC(), meta_space, data_space, class_space);
101 }
102
103 void CollectedHeap::print_heap_before_gc() {
104 if (PrintHeapAtGC) {
105 Universe::print_heap_before_gc();
106 }
107 if (_gc_heap_log != NULL) {
108 _gc_heap_log->log_heap_before();
109 }
110 }
111
112 void CollectedHeap::print_heap_after_gc() {
113 if (PrintHeapAtGC) {
114 Universe::print_heap_after_gc();
115 }
116 if (_gc_heap_log != NULL) {
117 _gc_heap_log->log_heap_after();
118 }
119 }
120
121 void CollectedHeap::register_nmethod(nmethod* nm) {
122 assert_locked_or_safepoint(CodeCache_lock);
123 }
124
125 void CollectedHeap::unregister_nmethod(nmethod* nm) {
126 assert_locked_or_safepoint(CodeCache_lock);
127 }
128
129 void CollectedHeap::trace_heap(GCWhen::Type when, GCTracer* gc_tracer) {
130 const GCHeapSummary& heap_summary = create_heap_summary();
131 const MetaspaceSummary& metaspace_summary = create_metaspace_summary();
132 gc_tracer->report_gc_heap_summary(when, heap_summary, metaspace_summary);
133 }
134
135 void CollectedHeap::trace_heap_before_gc(GCTracer* gc_tracer) {
136 trace_heap(GCWhen::BeforeGC, gc_tracer);
137 }
138
139 void CollectedHeap::trace_heap_after_gc(GCTracer* gc_tracer) {
140 trace_heap(GCWhen::AfterGC, gc_tracer);
141 }
142
143 // Memory state functions.
144
145
146 CollectedHeap::CollectedHeap() : _n_par_threads(0)
147 {
148 const size_t max_len = size_t(arrayOopDesc::max_array_length(T_INT));
149 const size_t elements_per_word = HeapWordSize / sizeof(jint);
150 _filler_array_max_size = align_object_size(filler_array_hdr_size() +
151 max_len / elements_per_word);
152
|
80
81 GCHeapSummary CollectedHeap::create_heap_summary() {
82 VirtualSpaceSummary heap_space = create_heap_space_summary();
83 return GCHeapSummary(heap_space, used());
84 }
85
86 MetaspaceSummary CollectedHeap::create_metaspace_summary() {
87 const MetaspaceSizes meta_space(
88 MetaspaceAux::allocated_capacity_bytes(),
89 MetaspaceAux::allocated_used_bytes(),
90 MetaspaceAux::reserved_bytes());
91 const MetaspaceSizes data_space(
92 MetaspaceAux::allocated_capacity_bytes(Metaspace::NonClassType),
93 MetaspaceAux::allocated_used_bytes(Metaspace::NonClassType),
94 MetaspaceAux::reserved_bytes(Metaspace::NonClassType));
95 const MetaspaceSizes class_space(
96 MetaspaceAux::allocated_capacity_bytes(Metaspace::ClassType),
97 MetaspaceAux::allocated_used_bytes(Metaspace::ClassType),
98 MetaspaceAux::reserved_bytes(Metaspace::ClassType));
99
100 const MetaspaceChunkFreeListSummary& ms_chunk_free_list_summary =
101 MetaspaceAux::chunk_free_list_summary(Metaspace::NonClassType);
102 const MetaspaceChunkFreeListSummary& class_chunk_free_list_summary =
103 MetaspaceAux::chunk_free_list_summary(Metaspace::ClassType);
104
105 return MetaspaceSummary(MetaspaceGC::capacity_until_GC(), meta_space, data_space, class_space,
106 ms_chunk_free_list_summary, class_chunk_free_list_summary);
107 }
108
109 void CollectedHeap::print_heap_before_gc() {
110 if (PrintHeapAtGC) {
111 Universe::print_heap_before_gc();
112 }
113 if (_gc_heap_log != NULL) {
114 _gc_heap_log->log_heap_before();
115 }
116 }
117
118 void CollectedHeap::print_heap_after_gc() {
119 if (PrintHeapAtGC) {
120 Universe::print_heap_after_gc();
121 }
122 if (_gc_heap_log != NULL) {
123 _gc_heap_log->log_heap_after();
124 }
125 }
126
127 void CollectedHeap::register_nmethod(nmethod* nm) {
128 assert_locked_or_safepoint(CodeCache_lock);
129 }
130
131 void CollectedHeap::unregister_nmethod(nmethod* nm) {
132 assert_locked_or_safepoint(CodeCache_lock);
133 }
134
135 void CollectedHeap::trace_heap(GCWhen::Type when, GCTracer* gc_tracer) {
136 const GCHeapSummary& heap_summary = create_heap_summary();
137 gc_tracer->report_gc_heap_summary(when, heap_summary);
138
139 const MetaspaceSummary& metaspace_summary = create_metaspace_summary();
140 gc_tracer->report_metaspace_summary(when, metaspace_summary);
141 }
142
143 void CollectedHeap::trace_heap_before_gc(GCTracer* gc_tracer) {
144 trace_heap(GCWhen::BeforeGC, gc_tracer);
145 }
146
147 void CollectedHeap::trace_heap_after_gc(GCTracer* gc_tracer) {
148 trace_heap(GCWhen::AfterGC, gc_tracer);
149 }
150
151 // Memory state functions.
152
153
154 CollectedHeap::CollectedHeap() : _n_par_threads(0)
155 {
156 const size_t max_len = size_t(arrayOopDesc::max_array_length(T_INT));
157 const size_t elements_per_word = HeapWordSize / sizeof(jint);
158 _filler_array_max_size = align_object_size(filler_array_hdr_size() +
159 max_len / elements_per_word);
160
|