comparison src/share/vm/services/memoryManager.cpp @ 6197:d2a62e0f25eb

6995781: Native Memory Tracking (Phase 1) 7151532: DCmd for hotspot native memory tracking Summary: Implementation of native memory tracking phase 1, which tracks VM native memory usage, and related DCmd Reviewed-by: acorn, coleenp, fparain
author zgu
date Thu, 28 Jun 2012 17:03:16 -0400
parents bf864f701a4a
children da91efe96a93
comparison
equal deleted inserted replaced
6174:74533f63b116 6197:d2a62e0f25eb
164 f->do_oop((oop*) &_memory_mgr_obj); 164 f->do_oop((oop*) &_memory_mgr_obj);
165 } 165 }
166 166
167 GCStatInfo::GCStatInfo(int num_pools) { 167 GCStatInfo::GCStatInfo(int num_pools) {
168 // initialize the arrays for memory usage 168 // initialize the arrays for memory usage
169 _before_gc_usage_array = (MemoryUsage*) NEW_C_HEAP_ARRAY(MemoryUsage, num_pools); 169 _before_gc_usage_array = (MemoryUsage*) NEW_C_HEAP_ARRAY(MemoryUsage, num_pools, mtInternal);
170 _after_gc_usage_array = (MemoryUsage*) NEW_C_HEAP_ARRAY(MemoryUsage, num_pools); 170 _after_gc_usage_array = (MemoryUsage*) NEW_C_HEAP_ARRAY(MemoryUsage, num_pools, mtInternal);
171 _usage_array_size = num_pools; 171 _usage_array_size = num_pools;
172 clear(); 172 clear();
173 } 173 }
174 174
175 GCStatInfo::~GCStatInfo() { 175 GCStatInfo::~GCStatInfo() {
176 FREE_C_HEAP_ARRAY(MemoryUsage*, _before_gc_usage_array); 176 FREE_C_HEAP_ARRAY(MemoryUsage*, _before_gc_usage_array, mtInternal);
177 FREE_C_HEAP_ARRAY(MemoryUsage*, _after_gc_usage_array); 177 FREE_C_HEAP_ARRAY(MemoryUsage*, _after_gc_usage_array, mtInternal);
178 } 178 }
179 179
180 void GCStatInfo::set_gc_usage(int pool_index, MemoryUsage usage, bool before_gc) { 180 void GCStatInfo::set_gc_usage(int pool_index, MemoryUsage usage, bool before_gc) {
181 MemoryUsage* gc_usage_array; 181 MemoryUsage* gc_usage_array;
182 if (before_gc) { 182 if (before_gc) {
212 delete _current_gc_stat; 212 delete _current_gc_stat;
213 } 213 }
214 214
215 void GCMemoryManager::initialize_gc_stat_info() { 215 void GCMemoryManager::initialize_gc_stat_info() {
216 assert(MemoryService::num_memory_pools() > 0, "should have one or more memory pools"); 216 assert(MemoryService::num_memory_pools() > 0, "should have one or more memory pools");
217 _last_gc_stat = new(ResourceObj::C_HEAP) GCStatInfo(MemoryService::num_memory_pools()); 217 _last_gc_stat = new(ResourceObj::C_HEAP, mtGC) GCStatInfo(MemoryService::num_memory_pools());
218 _current_gc_stat = new(ResourceObj::C_HEAP) GCStatInfo(MemoryService::num_memory_pools()); 218 _current_gc_stat = new(ResourceObj::C_HEAP, mtGC) GCStatInfo(MemoryService::num_memory_pools());
219 // tracking concurrent collections we need two objects: one to update, and one to 219 // tracking concurrent collections we need two objects: one to update, and one to
220 // hold the publicly available "last (completed) gc" information. 220 // hold the publicly available "last (completed) gc" information.
221 } 221 }
222 222
223 void GCMemoryManager::gc_begin(bool recordGCBeginTime, bool recordPreGCUsage, 223 void GCMemoryManager::gc_begin(bool recordGCBeginTime, bool recordPreGCUsage,