125 _sampling_thread_vtime = other->sampling_thread_vtime() - _sampling_thread_vtime; |
125 _sampling_thread_vtime = other->sampling_thread_vtime() - _sampling_thread_vtime; |
126 } |
126 } |
127 |
127 |
128 class HRRSStatsIter: public HeapRegionClosure { |
128 class HRRSStatsIter: public HeapRegionClosure { |
129 size_t _occupied; |
129 size_t _occupied; |
130 size_t _total_mem_sz; |
130 |
131 size_t _max_mem_sz; |
131 size_t _total_rs_mem_sz; |
132 HeapRegion* _max_mem_sz_region; |
132 size_t _max_rs_mem_sz; |
|
133 HeapRegion* _max_rs_mem_sz_region; |
|
134 |
|
135 size_t _total_code_root_mem_sz; |
|
136 size_t _max_code_root_mem_sz; |
|
137 HeapRegion* _max_code_root_mem_sz_region; |
133 public: |
138 public: |
134 HRRSStatsIter() : |
139 HRRSStatsIter() : |
135 _occupied(0), |
140 _occupied(0), |
136 _total_mem_sz(0), |
141 _total_rs_mem_sz(0), |
137 _max_mem_sz(0), |
142 _max_rs_mem_sz(0), |
138 _max_mem_sz_region(NULL) |
143 _max_rs_mem_sz_region(NULL), |
|
144 _total_code_root_mem_sz(0), |
|
145 _max_code_root_mem_sz(0), |
|
146 _max_code_root_mem_sz_region(NULL) |
139 {} |
147 {} |
140 |
148 |
141 bool doHeapRegion(HeapRegion* r) { |
149 bool doHeapRegion(HeapRegion* r) { |
142 size_t mem_sz = r->rem_set()->mem_size(); |
150 HeapRegionRemSet* hrrs = r->rem_set(); |
143 if (mem_sz > _max_mem_sz) { |
151 |
144 _max_mem_sz = mem_sz; |
152 // HeapRegionRemSet::mem_size() includes the |
145 _max_mem_sz_region = r; |
153 // size of the strong code roots |
|
154 size_t rs_mem_sz = hrrs->mem_size(); |
|
155 if (rs_mem_sz > _max_rs_mem_sz) { |
|
156 _max_rs_mem_sz = rs_mem_sz; |
|
157 _max_rs_mem_sz_region = r; |
146 } |
158 } |
147 _total_mem_sz += mem_sz; |
159 _total_rs_mem_sz += rs_mem_sz; |
148 size_t occ = r->rem_set()->occupied(); |
160 |
|
161 size_t code_root_mem_sz = hrrs->strong_code_roots_mem_size(); |
|
162 if (code_root_mem_sz > _max_code_root_mem_sz) { |
|
163 _max_code_root_mem_sz = code_root_mem_sz; |
|
164 _max_code_root_mem_sz_region = r; |
|
165 } |
|
166 _total_code_root_mem_sz += code_root_mem_sz; |
|
167 |
|
168 size_t occ = hrrs->occupied(); |
149 _occupied += occ; |
169 _occupied += occ; |
150 return false; |
170 return false; |
151 } |
171 } |
152 size_t total_mem_sz() { return _total_mem_sz; } |
172 size_t total_rs_mem_sz() { return _total_rs_mem_sz; } |
153 size_t max_mem_sz() { return _max_mem_sz; } |
173 size_t max_rs_mem_sz() { return _max_rs_mem_sz; } |
|
174 HeapRegion* max_rs_mem_sz_region() { return _max_rs_mem_sz_region; } |
|
175 size_t total_code_root_mem_sz() { return _total_code_root_mem_sz; } |
|
176 size_t max_code_root_mem_sz() { return _max_code_root_mem_sz; } |
|
177 HeapRegion* max_code_root_mem_sz_region() { return _max_code_root_mem_sz_region; } |
154 size_t occupied() { return _occupied; } |
178 size_t occupied() { return _occupied; } |
155 HeapRegion* max_mem_sz_region() { return _max_mem_sz_region; } |
|
156 }; |
179 }; |
157 |
180 |
158 double calc_percentage(size_t numerator, size_t denominator) { |
181 double calc_percentage(size_t numerator, size_t denominator) { |
159 if (denominator != 0) { |
182 if (denominator != 0) { |
160 return (double)numerator / denominator * 100.0; |
183 return (double)numerator / denominator * 100.0; |
182 out->print_cr(" Concurrent sampling threads times (s)"); |
205 out->print_cr(" Concurrent sampling threads times (s)"); |
183 out->print_cr(" %5.2f", sampling_thread_vtime()); |
206 out->print_cr(" %5.2f", sampling_thread_vtime()); |
184 |
207 |
185 HRRSStatsIter blk; |
208 HRRSStatsIter blk; |
186 G1CollectedHeap::heap()->heap_region_iterate(&blk); |
209 G1CollectedHeap::heap()->heap_region_iterate(&blk); |
|
210 // RemSet stats |
187 out->print_cr(" Total heap region rem set sizes = "SIZE_FORMAT"K." |
211 out->print_cr(" Total heap region rem set sizes = "SIZE_FORMAT"K." |
188 " Max = "SIZE_FORMAT"K.", |
212 " Max = "SIZE_FORMAT"K.", |
189 blk.total_mem_sz()/K, blk.max_mem_sz()/K); |
213 blk.total_rs_mem_sz()/K, blk.max_rs_mem_sz()/K); |
190 out->print_cr(" Static structures = "SIZE_FORMAT"K," |
214 out->print_cr(" Static structures = "SIZE_FORMAT"K," |
191 " free_lists = "SIZE_FORMAT"K.", |
215 " free_lists = "SIZE_FORMAT"K.", |
192 HeapRegionRemSet::static_mem_size() / K, |
216 HeapRegionRemSet::static_mem_size() / K, |
193 HeapRegionRemSet::fl_mem_size() / K); |
217 HeapRegionRemSet::fl_mem_size() / K); |
194 out->print_cr(" "SIZE_FORMAT" occupied cards represented.", |
218 out->print_cr(" "SIZE_FORMAT" occupied cards represented.", |
195 blk.occupied()); |
219 blk.occupied()); |
196 HeapRegion* max_mem_sz_region = blk.max_mem_sz_region(); |
220 HeapRegion* max_rs_mem_sz_region = blk.max_rs_mem_sz_region(); |
197 HeapRegionRemSet* rem_set = max_mem_sz_region->rem_set(); |
221 HeapRegionRemSet* max_rs_rem_set = max_rs_mem_sz_region->rem_set(); |
198 out->print_cr(" Max size region = "HR_FORMAT", " |
222 out->print_cr(" Max size region = "HR_FORMAT", " |
199 "size = "SIZE_FORMAT "K, occupied = "SIZE_FORMAT"K.", |
223 "size = "SIZE_FORMAT "K, occupied = "SIZE_FORMAT"K.", |
200 HR_FORMAT_PARAMS(max_mem_sz_region), |
224 HR_FORMAT_PARAMS(max_rs_mem_sz_region), |
201 (rem_set->mem_size() + K - 1)/K, |
225 (max_rs_rem_set->mem_size() + K - 1)/K, |
202 (rem_set->occupied() + K - 1)/K); |
226 (max_rs_rem_set->occupied() + K - 1)/K); |
203 |
|
204 out->print_cr(" Did %d coarsenings.", num_coarsenings()); |
227 out->print_cr(" Did %d coarsenings.", num_coarsenings()); |
205 } |
228 // Strong code root stats |
|
229 out->print_cr(" Total heap region code-root set sizes = "SIZE_FORMAT"K." |
|
230 " Max = "SIZE_FORMAT"K.", |
|
231 blk.total_code_root_mem_sz()/K, blk.max_code_root_mem_sz()/K); |
|
232 HeapRegion* max_code_root_mem_sz_region = blk.max_code_root_mem_sz_region(); |
|
233 HeapRegionRemSet* max_code_root_rem_set = max_code_root_mem_sz_region->rem_set(); |
|
234 out->print_cr(" Max size region = "HR_FORMAT", " |
|
235 "size = "SIZE_FORMAT "K, num_elems = "SIZE_FORMAT".", |
|
236 HR_FORMAT_PARAMS(max_code_root_mem_sz_region), |
|
237 (max_code_root_rem_set->strong_code_roots_mem_size() + K - 1)/K, |
|
238 (max_code_root_rem_set->strong_code_roots_list_length())); |
|
239 } |