Mercurial > hg > truffle
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 |