src/share/vm/services/memReporter.cpp

changeset 4193
716c64bda5ba
parent 3900
d2a62e0f25eb
child 4376
79f492f184d0
     1.1 --- a/src/share/vm/services/memReporter.cpp	Thu Oct 18 13:09:47 2012 -0400
     1.2 +++ b/src/share/vm/services/memReporter.cpp	Fri Oct 19 21:40:07 2012 -0400
     1.3 @@ -51,6 +51,7 @@
     1.4  
     1.5    report_summaries(baseline);
     1.6    if (!summary_only && MemTracker::track_callsite()) {
     1.7 +    report_virtual_memory_map(baseline);
     1.8      report_callsites(baseline);
     1.9    }
    1.10    _outputer.done();
    1.11 @@ -74,6 +75,25 @@
    1.12    _outputer.done_category_summary();
    1.13  }
    1.14  
    1.15 +void BaselineReporter::report_virtual_memory_map(const MemBaseline& baseline) {
    1.16 +  _outputer.start_virtual_memory_map();
    1.17 +  MemBaseline* pBL = const_cast<MemBaseline*>(&baseline);
    1.18 +  MemPointerArrayIteratorImpl itr = MemPointerArrayIteratorImpl(pBL->_vm_map);
    1.19 +  VMMemRegionEx* rgn = (VMMemRegionEx*)itr.current();
    1.20 +  while (rgn != NULL) {
    1.21 +    if (rgn->is_reserved_region()) {
    1.22 +      _outputer.reserved_memory_region(FLAGS_TO_MEMORY_TYPE(rgn->flags()),
    1.23 +        rgn->base(), rgn->base() + rgn->size(), amount_in_current_scale(rgn->size()), rgn->pc());
    1.24 +    } else {
    1.25 +      _outputer.committed_memory_region(rgn->base(), rgn->base() + rgn->size(),
    1.26 +        amount_in_current_scale(rgn->size()), rgn->pc());
    1.27 +    }
    1.28 +    rgn = (VMMemRegionEx*)itr.next();
    1.29 +  }
    1.30 +
    1.31 +  _outputer.done_virtual_memory_map();
    1.32 +}
    1.33 +
    1.34  void BaselineReporter::report_callsites(const MemBaseline& baseline) {
    1.35    _outputer.start_callsite();
    1.36    MemBaseline* pBL = const_cast<MemBaseline*>(&baseline);
    1.37 @@ -324,6 +344,40 @@
    1.38    _output->print_cr(" ");
    1.39  }
    1.40  
    1.41 +
    1.42 +void BaselineTTYOutputer::start_virtual_memory_map() {
    1.43 +  _output->print_cr("Virtual memory map:");
    1.44 +}
    1.45 +
    1.46 +void BaselineTTYOutputer::reserved_memory_region(MEMFLAGS type, address base, address end,
    1.47 +                                                 size_t size, address pc) {
    1.48 +  const char* unit = memory_unit(_scale);
    1.49 +  char buf[128];
    1.50 +  int  offset;
    1.51 +  _output->print_cr(" ");
    1.52 +  _output->print_cr("[" PTR_FORMAT " - " PTR_FORMAT "] reserved %d%s for %s", base, end, size, unit,
    1.53 +            MemBaseline::type2name(type));
    1.54 +  if (os::dll_address_to_function_name(pc, buf, sizeof(buf), &offset)) {
    1.55 +      _output->print_cr("\t\tfrom [%s+0x%x]", buf, offset);
    1.56 +  }
    1.57 +}
    1.58 +
    1.59 +void BaselineTTYOutputer::committed_memory_region(address base, address end, size_t size, address pc) {
    1.60 +  const char* unit = memory_unit(_scale);
    1.61 +  char buf[128];
    1.62 +  int  offset;
    1.63 +  _output->print("\t[" PTR_FORMAT " - " PTR_FORMAT "] committed %d%s", base, end, size, unit);
    1.64 +  if (os::dll_address_to_function_name(pc, buf, sizeof(buf), &offset)) {
    1.65 +      _output->print_cr(" from [%s+0x%x]", buf, offset);
    1.66 +  }
    1.67 +}
    1.68 +
    1.69 +void BaselineTTYOutputer::done_virtual_memory_map() {
    1.70 +  _output->print_cr(" ");
    1.71 +}
    1.72 +
    1.73 +
    1.74 +
    1.75  void BaselineTTYOutputer::start_callsite() {
    1.76    _output->print_cr("Details:");
    1.77    _output->print_cr(" ");
    1.78 @@ -337,7 +391,7 @@
    1.79    size_t malloc_count) {
    1.80    if (malloc_amt > 0) {
    1.81      const char* unit = memory_unit(_scale);
    1.82 -    char buf[64];
    1.83 +    char buf[128];
    1.84      int  offset;
    1.85      if (pc == 0) {
    1.86        _output->print("[BOOTSTRAP]%18s", " ");
    1.87 @@ -357,7 +411,7 @@
    1.88    size_t committed_amt) {
    1.89    if (reserved_amt > 0) {
    1.90      const char* unit = memory_unit(_scale);
    1.91 -    char buf[64];
    1.92 +    char buf[128];
    1.93      int  offset;
    1.94      if (pc == 0) {
    1.95        _output->print("[BOOTSTRAP]%18s", " ");
    1.96 @@ -502,7 +556,7 @@
    1.97      int malloc_diff, int malloc_count_diff) {
    1.98    if (malloc_diff != 0) {
    1.99      const char* unit = memory_unit(_scale);
   1.100 -    char buf[64];
   1.101 +    char buf[128];
   1.102      int  offset;
   1.103      if (pc == 0) {
   1.104        _output->print_cr("[BOOTSTRAP]%18s", " ");

mercurial