1.1 --- a/src/share/vm/services/memReporter.cpp Sat Jun 15 13:17:36 2013 +0200 1.2 +++ b/src/share/vm/services/memReporter.cpp Mon Jun 10 10:45:19 2013 -0400 1.3 @@ -190,17 +190,18 @@ 1.4 while (cur_malloc_callsite != NULL || prev_malloc_callsite != NULL) { 1.5 if (prev_malloc_callsite == NULL || 1.6 cur_malloc_callsite->addr() < prev_malloc_callsite->addr()) { 1.7 + // this is a new callsite 1.8 _outputer.diff_malloc_callsite(cur_malloc_callsite->addr(), 1.9 amount_in_current_scale(cur_malloc_callsite->amount()), 1.10 cur_malloc_callsite->count(), 1.11 diff_in_current_scale(cur_malloc_callsite->amount(), 0), 1.12 diff(cur_malloc_callsite->count(), 0)); 1.13 cur_malloc_callsite = (MallocCallsitePointer*)cur_malloc_itr.next(); 1.14 - } else if (prev_malloc_callsite == NULL || 1.15 + } else if (cur_malloc_callsite == NULL || 1.16 cur_malloc_callsite->addr() > prev_malloc_callsite->addr()) { 1.17 - _outputer.diff_malloc_callsite(cur_malloc_callsite->addr(), 1.18 - amount_in_current_scale(prev_malloc_callsite->amount()), 1.19 - prev_malloc_callsite->count(), 1.20 + // this callsite is already gone 1.21 + _outputer.diff_malloc_callsite(prev_malloc_callsite->addr(), 1.22 + amount_in_current_scale(0), 0, 1.23 diff_in_current_scale(0, prev_malloc_callsite->amount()), 1.24 diff(0, prev_malloc_callsite->count())); 1.25 prev_malloc_callsite = (MallocCallsitePointer*)prev_malloc_itr.next(); 1.26 @@ -222,6 +223,7 @@ 1.27 VMCallsitePointer* prev_vm_callsite = (VMCallsitePointer*)prev_vm_itr.current(); 1.28 while (cur_vm_callsite != NULL || prev_vm_callsite != NULL) { 1.29 if (prev_vm_callsite == NULL || cur_vm_callsite->addr() < prev_vm_callsite->addr()) { 1.30 + // this is a new callsite 1.31 _outputer.diff_virtual_memory_callsite(cur_vm_callsite->addr(), 1.32 amount_in_current_scale(cur_vm_callsite->reserved_amount()), 1.33 amount_in_current_scale(cur_vm_callsite->committed_amount()), 1.34 @@ -229,9 +231,10 @@ 1.35 diff_in_current_scale(cur_vm_callsite->committed_amount(), 0)); 1.36 cur_vm_callsite = (VMCallsitePointer*)cur_vm_itr.next(); 1.37 } else if (cur_vm_callsite == NULL || cur_vm_callsite->addr() > prev_vm_callsite->addr()) { 1.38 + // this callsite is already gone 1.39 _outputer.diff_virtual_memory_callsite(prev_vm_callsite->addr(), 1.40 - amount_in_current_scale(prev_vm_callsite->reserved_amount()), 1.41 - amount_in_current_scale(prev_vm_callsite->committed_amount()), 1.42 + amount_in_current_scale(0), 1.43 + amount_in_current_scale(0), 1.44 diff_in_current_scale(0, prev_vm_callsite->reserved_amount()), 1.45 diff_in_current_scale(0, prev_vm_callsite->committed_amount())); 1.46 prev_vm_callsite = (VMCallsitePointer*)prev_vm_itr.next();