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 }