142 void ClassLoaderStatsClosure::addEmptyParents(oop cl) {
143 while (cl != NULL && java_lang_ClassLoader::loader_data_acquire(cl) == NULL) {
144 // This classloader has not loaded any classes
145 ClassLoaderStats** cls_ptr = _stats->get(cl);
146 if (cls_ptr == NULL) {
147 // It does not exist in our table - add it
148 ClassLoaderStats* cls = new ClassLoaderStats();
149 cls->_class_loader = cl;
150 cls->_parent = java_lang_ClassLoader::parent(cl);
151 _stats->put(cl, cls);
152 _total_loaders++;
153 }
154
155 cl = java_lang_ClassLoader::parent(cl);
156 }
157 }
158
159
160 void ClassLoaderStatsVMOperation::doit() {
161 ClassLoaderStatsClosure clsc (_out);
162 ClassLoaderDataGraph::cld_do(&clsc);
163 clsc.print();
164 }
165
166
167 void ClassLoaderStatsDCmd::execute(DCmdSource source, TRAPS) {
168 ClassLoaderStatsVMOperation op(output());
169 VMThread::execute(&op);
170 }
|
142 void ClassLoaderStatsClosure::addEmptyParents(oop cl) {
143 while (cl != NULL && java_lang_ClassLoader::loader_data_acquire(cl) == NULL) {
144 // This classloader has not loaded any classes
145 ClassLoaderStats** cls_ptr = _stats->get(cl);
146 if (cls_ptr == NULL) {
147 // It does not exist in our table - add it
148 ClassLoaderStats* cls = new ClassLoaderStats();
149 cls->_class_loader = cl;
150 cls->_parent = java_lang_ClassLoader::parent(cl);
151 _stats->put(cl, cls);
152 _total_loaders++;
153 }
154
155 cl = java_lang_ClassLoader::parent(cl);
156 }
157 }
158
159
160 void ClassLoaderStatsVMOperation::doit() {
161 ClassLoaderStatsClosure clsc (_out);
162 ClassLoaderDataGraph::loaded_cld_do(&clsc);
163 clsc.print();
164 }
165
166
167 void ClassLoaderStatsDCmd::execute(DCmdSource source, TRAPS) {
168 ClassLoaderStatsVMOperation op(output());
169 VMThread::execute(&op);
170 }
|