comparison src/share/vm/services/memRecorder.cpp @ 6231:7e5976e66c62

7182543: NMT ON: Aggregate a few NMT related bugs Summary: 1) Fixed MemTrackWorker::generations_in_used() calculation 2) Ensured NMT not to leak memory recorders after shutdown 3) Used ThreadCritical to block safepoint safe threads Reviewed-by: acorn, coleenp, dholmes, kvn
author zgu
date Thu, 19 Jul 2012 09:05:42 -0400
parents d2a62e0f25eb
children 716c64bda5ba
comparison
equal deleted inserted replaced
6201:ace99a6ffc83 6231:7e5976e66c62
43 43
44 return itr_cur; 44 return itr_cur;
45 } 45 }
46 46
47 47
48 debug_only(volatile jint MemRecorder::_instance_count = 0;) 48 volatile jint MemRecorder::_instance_count = 0;
49 49
50 MemRecorder::MemRecorder() { 50 MemRecorder::MemRecorder() {
51 assert(MemTracker::is_on(), "Native memory tracking is off"); 51 assert(MemTracker::is_on(), "Native memory tracking is off");
52 debug_only(Atomic::inc(&_instance_count);) 52 Atomic::inc(&_instance_count);
53 debug_only(set_generation();) 53 debug_only(set_generation();)
54 54
55 if (MemTracker::track_callsite()) { 55 if (MemTracker::track_callsite()) {
56 _pointer_records = new (std::nothrow)FixedSizeMemPointerArray<SeqMemPointerRecordEx, 56 _pointer_records = new (std::nothrow)FixedSizeMemPointerArray<SeqMemPointerRecordEx,
57 DEFAULT_RECORDER_PTR_ARRAY_SIZE>(); 57 DEFAULT_RECORDER_PTR_ARRAY_SIZE>();
81 } 81 }
82 if (_next != NULL) { 82 if (_next != NULL) {
83 delete _next; 83 delete _next;
84 } 84 }
85 85
86 #ifdef ASSERT
87 Atomic::dec(&_instance_count); 86 Atomic::dec(&_instance_count);
88 #endif
89 } 87 }
90 88
91 // Sorting order: 89 // Sorting order:
92 // 1. memory block address 90 // 1. memory block address
93 // 2. mem pointer record tags 91 // 2. mem pointer record tags