src/share/vm/services/memReporter.cpp

changeset 9054
db49d511817a
parent 9053
da59531e1fdf
child 9122
024be04bb151
child 9621
c3abd2b71b9a
     1.1 --- a/src/share/vm/services/memReporter.cpp	Wed Nov 08 09:07:05 2017 -0500
     1.2 +++ b/src/share/vm/services/memReporter.cpp	Mon Jul 24 15:19:46 2017 -0400
     1.3 @@ -312,11 +312,16 @@
     1.4  }
     1.5  
     1.6  void MemSummaryDiffReporter::print_malloc_diff(size_t current_amount, size_t current_count,
     1.7 -    size_t early_amount, size_t early_count) const {
     1.8 +    size_t early_amount, size_t early_count, MEMFLAGS flags) const {
     1.9    const char* scale = current_scale();
    1.10    outputStream* out = output();
    1.11  
    1.12    out->print("malloc=" SIZE_FORMAT "%s", amount_in_current_scale(current_amount), scale);
    1.13 +  // Report type only if it is valid
    1.14 +  if (flags != mtNone) {
    1.15 +    out->print(" type=%s", NMTUtil::flag_to_name(flags));
    1.16 +  }
    1.17 +
    1.18    long amount_diff = diff_in_current_scale(current_amount, early_amount);
    1.19    if (amount_diff != 0) {
    1.20      out->print(" %+ld%s", amount_diff, scale);
    1.21 @@ -445,7 +450,7 @@
    1.22          diff_in_current_scale(current_malloc_amount, early_malloc_amount) != 0) {
    1.23        out->print("%28s(", " ");
    1.24        print_malloc_diff(current_malloc_amount, (flag == mtChunk) ? 0 : current_malloc->malloc_count(),
    1.25 -        early_malloc_amount, early_malloc->malloc_count());
    1.26 +        early_malloc_amount, early_malloc->malloc_count(), mtNone);
    1.27        out->print_cr(")");
    1.28      }
    1.29  
    1.30 @@ -493,8 +498,8 @@
    1.31  }
    1.32  
    1.33  void MemDetailDiffReporter::diff_malloc_sites() const {
    1.34 -  MallocSiteIterator early_itr = _early_baseline.malloc_sites(MemBaseline::by_site);
    1.35 -  MallocSiteIterator current_itr = _current_baseline.malloc_sites(MemBaseline::by_site);
    1.36 +  MallocSiteIterator early_itr = _early_baseline.malloc_sites(MemBaseline::by_site_and_type);
    1.37 +  MallocSiteIterator current_itr = _current_baseline.malloc_sites(MemBaseline::by_site_and_type);
    1.38  
    1.39    const MallocSite* early_site   = early_itr.next();
    1.40    const MallocSite* current_site = current_itr.next();
    1.41 @@ -557,22 +562,23 @@
    1.42  
    1.43  void MemDetailDiffReporter::new_malloc_site(const MallocSite* malloc_site) const {
    1.44    diff_malloc_site(malloc_site->call_stack(), malloc_site->size(), malloc_site->count(),
    1.45 -    0, 0);
    1.46 +    0, 0, malloc_site->flags());
    1.47  }
    1.48  
    1.49  void MemDetailDiffReporter::old_malloc_site(const MallocSite* malloc_site) const {
    1.50    diff_malloc_site(malloc_site->call_stack(), 0, 0, malloc_site->size(),
    1.51 -    malloc_site->count());
    1.52 +    malloc_site->count(), malloc_site->flags());
    1.53  }
    1.54  
    1.55  void MemDetailDiffReporter::diff_malloc_site(const MallocSite* early,
    1.56    const MallocSite* current)  const {
    1.57 +  assert(early->flags() == current->flags(), "Must be the same memory type");
    1.58    diff_malloc_site(current->call_stack(), current->size(), current->count(),
    1.59 -    early->size(), early->count());
    1.60 +    early->size(), early->count(), early->flags());
    1.61  }
    1.62  
    1.63  void MemDetailDiffReporter::diff_malloc_site(const NativeCallStack* stack, size_t current_size,
    1.64 -  size_t current_count, size_t early_size, size_t early_count) const {
    1.65 +  size_t current_count, size_t early_size, size_t early_count, MEMFLAGS flags) const {
    1.66    outputStream* out = output();
    1.67  
    1.68    assert(stack != NULL, "NULL stack");
    1.69 @@ -584,7 +590,7 @@
    1.70    stack->print_on(out);
    1.71    out->print("%28s (", " ");
    1.72    print_malloc_diff(current_size, current_count,
    1.73 -    early_size, early_count);
    1.74 +    early_size, early_count, flags);
    1.75  
    1.76    out->print_cr(")\n");
    1.77  }

mercurial