49 _outputer.num_of_classes(baseline.number_of_classes()); |
49 _outputer.num_of_classes(baseline.number_of_classes()); |
50 _outputer.num_of_threads(baseline.number_of_threads()); |
50 _outputer.num_of_threads(baseline.number_of_threads()); |
51 |
51 |
52 report_summaries(baseline); |
52 report_summaries(baseline); |
53 if (!summary_only && MemTracker::track_callsite()) { |
53 if (!summary_only && MemTracker::track_callsite()) { |
|
54 report_virtual_memory_map(baseline); |
54 report_callsites(baseline); |
55 report_callsites(baseline); |
55 } |
56 } |
56 _outputer.done(); |
57 _outputer.done(); |
57 } |
58 } |
58 |
59 |
70 amount_in_current_scale(baseline.arena_amount(type)), |
71 amount_in_current_scale(baseline.arena_amount(type)), |
71 baseline.arena_count(type)); |
72 baseline.arena_count(type)); |
72 } |
73 } |
73 |
74 |
74 _outputer.done_category_summary(); |
75 _outputer.done_category_summary(); |
|
76 } |
|
77 |
|
78 void BaselineReporter::report_virtual_memory_map(const MemBaseline& baseline) { |
|
79 _outputer.start_virtual_memory_map(); |
|
80 MemBaseline* pBL = const_cast<MemBaseline*>(&baseline); |
|
81 MemPointerArrayIteratorImpl itr = MemPointerArrayIteratorImpl(pBL->_vm_map); |
|
82 VMMemRegionEx* rgn = (VMMemRegionEx*)itr.current(); |
|
83 while (rgn != NULL) { |
|
84 if (rgn->is_reserved_region()) { |
|
85 _outputer.reserved_memory_region(FLAGS_TO_MEMORY_TYPE(rgn->flags()), |
|
86 rgn->base(), rgn->base() + rgn->size(), amount_in_current_scale(rgn->size()), rgn->pc()); |
|
87 } else { |
|
88 _outputer.committed_memory_region(rgn->base(), rgn->base() + rgn->size(), |
|
89 amount_in_current_scale(rgn->size()), rgn->pc()); |
|
90 } |
|
91 rgn = (VMMemRegionEx*)itr.next(); |
|
92 } |
|
93 |
|
94 _outputer.done_virtual_memory_map(); |
75 } |
95 } |
76 |
96 |
77 void BaselineReporter::report_callsites(const MemBaseline& baseline) { |
97 void BaselineReporter::report_callsites(const MemBaseline& baseline) { |
78 _outputer.start_callsite(); |
98 _outputer.start_callsite(); |
79 MemBaseline* pBL = const_cast<MemBaseline*>(&baseline); |
99 MemBaseline* pBL = const_cast<MemBaseline*>(&baseline); |
322 |
342 |
323 void BaselineTTYOutputer::done_category_summary() { |
343 void BaselineTTYOutputer::done_category_summary() { |
324 _output->print_cr(" "); |
344 _output->print_cr(" "); |
325 } |
345 } |
326 |
346 |
|
347 |
|
348 void BaselineTTYOutputer::start_virtual_memory_map() { |
|
349 _output->print_cr("Virtual memory map:"); |
|
350 } |
|
351 |
|
352 void BaselineTTYOutputer::reserved_memory_region(MEMFLAGS type, address base, address end, |
|
353 size_t size, address pc) { |
|
354 const char* unit = memory_unit(_scale); |
|
355 char buf[128]; |
|
356 int offset; |
|
357 _output->print_cr(" "); |
|
358 _output->print_cr("[" PTR_FORMAT " - " PTR_FORMAT "] reserved %d%s for %s", base, end, size, unit, |
|
359 MemBaseline::type2name(type)); |
|
360 if (os::dll_address_to_function_name(pc, buf, sizeof(buf), &offset)) { |
|
361 _output->print_cr("\t\tfrom [%s+0x%x]", buf, offset); |
|
362 } |
|
363 } |
|
364 |
|
365 void BaselineTTYOutputer::committed_memory_region(address base, address end, size_t size, address pc) { |
|
366 const char* unit = memory_unit(_scale); |
|
367 char buf[128]; |
|
368 int offset; |
|
369 _output->print("\t[" PTR_FORMAT " - " PTR_FORMAT "] committed %d%s", base, end, size, unit); |
|
370 if (os::dll_address_to_function_name(pc, buf, sizeof(buf), &offset)) { |
|
371 _output->print_cr(" from [%s+0x%x]", buf, offset); |
|
372 } |
|
373 } |
|
374 |
|
375 void BaselineTTYOutputer::done_virtual_memory_map() { |
|
376 _output->print_cr(" "); |
|
377 } |
|
378 |
|
379 |
|
380 |
327 void BaselineTTYOutputer::start_callsite() { |
381 void BaselineTTYOutputer::start_callsite() { |
328 _output->print_cr("Details:"); |
382 _output->print_cr("Details:"); |
329 _output->print_cr(" "); |
383 _output->print_cr(" "); |
330 } |
384 } |
331 |
385 |
335 |
389 |
336 void BaselineTTYOutputer::malloc_callsite(address pc, size_t malloc_amt, |
390 void BaselineTTYOutputer::malloc_callsite(address pc, size_t malloc_amt, |
337 size_t malloc_count) { |
391 size_t malloc_count) { |
338 if (malloc_amt > 0) { |
392 if (malloc_amt > 0) { |
339 const char* unit = memory_unit(_scale); |
393 const char* unit = memory_unit(_scale); |
340 char buf[64]; |
394 char buf[128]; |
341 int offset; |
395 int offset; |
342 if (pc == 0) { |
396 if (pc == 0) { |
343 _output->print("[BOOTSTRAP]%18s", " "); |
397 _output->print("[BOOTSTRAP]%18s", " "); |
344 } else if (os::dll_address_to_function_name(pc, buf, sizeof(buf), &offset)) { |
398 } else if (os::dll_address_to_function_name(pc, buf, sizeof(buf), &offset)) { |
345 _output->print_cr("[" PTR_FORMAT "] %s+0x%x", pc, buf, offset); |
399 _output->print_cr("[" PTR_FORMAT "] %s+0x%x", pc, buf, offset); |
355 |
409 |
356 void BaselineTTYOutputer::virtual_memory_callsite(address pc, size_t reserved_amt, |
410 void BaselineTTYOutputer::virtual_memory_callsite(address pc, size_t reserved_amt, |
357 size_t committed_amt) { |
411 size_t committed_amt) { |
358 if (reserved_amt > 0) { |
412 if (reserved_amt > 0) { |
359 const char* unit = memory_unit(_scale); |
413 const char* unit = memory_unit(_scale); |
360 char buf[64]; |
414 char buf[128]; |
361 int offset; |
415 int offset; |
362 if (pc == 0) { |
416 if (pc == 0) { |
363 _output->print("[BOOTSTRAP]%18s", " "); |
417 _output->print("[BOOTSTRAP]%18s", " "); |
364 } else if (os::dll_address_to_function_name(pc, buf, sizeof(buf), &offset)) { |
418 } else if (os::dll_address_to_function_name(pc, buf, sizeof(buf), &offset)) { |
365 _output->print_cr("[" PTR_FORMAT "] %s+0x%x", pc, buf, offset); |
419 _output->print_cr("[" PTR_FORMAT "] %s+0x%x", pc, buf, offset); |
500 void BaselineTTYOutputer::diff_malloc_callsite(address pc, |
554 void BaselineTTYOutputer::diff_malloc_callsite(address pc, |
501 size_t cur_malloc_amt, size_t cur_malloc_count, |
555 size_t cur_malloc_amt, size_t cur_malloc_count, |
502 int malloc_diff, int malloc_count_diff) { |
556 int malloc_diff, int malloc_count_diff) { |
503 if (malloc_diff != 0) { |
557 if (malloc_diff != 0) { |
504 const char* unit = memory_unit(_scale); |
558 const char* unit = memory_unit(_scale); |
505 char buf[64]; |
559 char buf[128]; |
506 int offset; |
560 int offset; |
507 if (pc == 0) { |
561 if (pc == 0) { |
508 _output->print_cr("[BOOTSTRAP]%18s", " "); |
562 _output->print_cr("[BOOTSTRAP]%18s", " "); |
509 } else { |
563 } else { |
510 if (os::dll_address_to_function_name(pc, buf, sizeof(buf), &offset)) { |
564 if (os::dll_address_to_function_name(pc, buf, sizeof(buf), &offset)) { |