hotspot/src/share/vm/services/memReporter.cpp
changeset 14120 7d298141c258
parent 13195 be27e1b6a4b9
child 14847 92a59a418262
equal deleted inserted replaced
14117:6e2e697e310f 14120:7d298141c258
    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)) {