comparison src/share/vm/runtime/perfData.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 f95d63e2154a
children da91efe96a93
comparison
equal deleted inserted replaced
6174:74533f63b116 6197:d2a62e0f25eb
79 : _name(NULL), _u(u), _v(v), _valuep(NULL), 79 : _name(NULL), _u(u), _v(v), _valuep(NULL),
80 _on_c_heap(false) { 80 _on_c_heap(false) {
81 81
82 const char* prefix = PerfDataManager::ns_to_string(ns); 82 const char* prefix = PerfDataManager::ns_to_string(ns);
83 83
84 _name = NEW_C_HEAP_ARRAY(char, strlen(name) + strlen(prefix) + 2); 84 _name = NEW_C_HEAP_ARRAY(char, strlen(name) + strlen(prefix) + 2, mtInternal);
85 assert(_name != NULL && strlen(name) != 0, "invalid name"); 85 assert(_name != NULL && strlen(name) != 0, "invalid name");
86 86
87 if (ns == NULL_NS) { 87 if (ns == NULL_NS) {
88 // No prefix is added to counters with the NULL_NS namespace. 88 // No prefix is added to counters with the NULL_NS namespace.
89 strcpy(_name, name); 89 strcpy(_name, name);
109 } 109 }
110 } 110 }
111 111
112 PerfData::~PerfData() { 112 PerfData::~PerfData() {
113 if (_name != NULL) { 113 if (_name != NULL) {
114 FREE_C_HEAP_ARRAY(char, _name); 114 FREE_C_HEAP_ARRAY(char, _name, mtInternal);
115 } 115 }
116 if (is_on_c_heap()) { 116 if (is_on_c_heap()) {
117 FREE_C_HEAP_ARRAY(PerfDataEntry, _pdep); 117 FREE_C_HEAP_ARRAY(PerfDataEntry, _pdep, mtInternal);
118 } 118 }
119 } 119 }
120 120
121 void PerfData::create_entry(BasicType dtype, size_t dsize, size_t vlen) { 121 void PerfData::create_entry(BasicType dtype, size_t dsize, size_t vlen) {
122 122
135 char* psmp = PerfMemory::alloc(size); 135 char* psmp = PerfMemory::alloc(size);
136 136
137 if (psmp == NULL) { 137 if (psmp == NULL) {
138 // out of PerfMemory memory resources. allocate on the C heap 138 // out of PerfMemory memory resources. allocate on the C heap
139 // to avoid vm termination. 139 // to avoid vm termination.
140 psmp = NEW_C_HEAP_ARRAY(char, size); 140 psmp = NEW_C_HEAP_ARRAY(char, size, mtInternal);
141 _on_c_heap = true; 141 _on_c_heap = true;
142 } 142 }
143 143
144 // compute the addresses for the name and data 144 // compute the addresses for the name and data
145 char* cname = psmp + sizeof(PerfDataEntry); 145 char* cname = psmp + sizeof(PerfDataEntry);
557 return p; 557 return p;
558 } 558 }
559 559
560 PerfDataList::PerfDataList(int length) { 560 PerfDataList::PerfDataList(int length) {
561 561
562 _set = new(ResourceObj::C_HEAP) PerfDataArray(length, true); 562 _set = new(ResourceObj::C_HEAP, mtInternal) PerfDataArray(length, true);
563 } 563 }
564 564
565 PerfDataList::PerfDataList(PerfDataList* p) { 565 PerfDataList::PerfDataList(PerfDataList* p) {
566 566
567 _set = new(ResourceObj::C_HEAP) PerfDataArray(p->length(), true); 567 _set = new(ResourceObj::C_HEAP, mtInternal) PerfDataArray(p->length(), true);
568 568
569 _set->appendAll(p->get_impl()); 569 _set->appendAll(p->get_impl());
570 } 570 }
571 571
572 PerfDataList::~PerfDataList() { 572 PerfDataList::~PerfDataList() {