src/share/vm/services/memBaseline.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File
*** old/src/share/vm/services/memBaseline.cpp Wed Nov 7 10:54:17 2012
--- new/src/share/vm/services/memBaseline.cpp Wed Nov 7 10:54:15 2012
*** 113,135 ****
--- 113,143 ----
size_t used_arena_size = 0;
int index;
while (malloc_ptr != NULL) {
index = flag2index(FLAGS_TO_MEMORY_TYPE(malloc_ptr->flags()));
size_t size = malloc_ptr->size();
+ if (malloc_ptr->is_arena_size_record()) {
+ // We do have anonymouse arenas, they are either used as value objects,
+ // which are embedded inside other objects, or used as stack objects.
+ _arena_data[index].inc(size);
+ used_arena_size += size;
+ } else {
_total_malloced += size;
_malloc_data[index].inc(size);
! if (MemPointerRecord::is_arena_record(malloc_ptr->flags())) {
! if (malloc_ptr->is_arena_record()) {
// see if arena size record present
MemPointerRecord* next_malloc_ptr = (MemPointerRecordEx*)malloc_itr.peek_next();
! if (MemPointerRecord::is_arena_size_record(next_malloc_ptr->flags())) {
assert(next_malloc_ptr->is_size_record_of_arena(malloc_ptr), "arena records do not match");
! if (next_malloc_ptr->is_arena_size_record()) {
+ assert(next_malloc_ptr->is_size_record_of_arena(malloc_ptr),
+ "Arena records do not match");
size = next_malloc_ptr->size();
_arena_data[index].inc(size);
used_arena_size += size;
malloc_itr.next();
}
}
+ }
malloc_ptr = (MemPointerRecordEx*)malloc_itr.next();
}
// substract used arena size to get size of arena chunk in free list
index = flag2index(mtChunk);
src/share/vm/services/memBaseline.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File