463 event.set_unloadedClassCount(ClassLoadingService::unloaded_class_count()); 464 event.commit(); 465 } 466 467 class JfrClassLoaderStatsClosure : public ClassLoaderStatsClosure { 468 public: 469 JfrClassLoaderStatsClosure() : ClassLoaderStatsClosure(NULL) {} 470 471 bool do_entry(oop const& key, ClassLoaderStats* const& cls) { 472 const ClassLoaderData* this_cld = cls->_class_loader != NULL ? 473 java_lang_ClassLoader::loader_data_acquire(cls->_class_loader) : NULL; 474 const ClassLoaderData* parent_cld = cls->_parent != NULL ? 475 java_lang_ClassLoader::loader_data_acquire(cls->_parent) : NULL; 476 EventClassLoaderStatistics event; 477 event.set_classLoader(this_cld); 478 event.set_parentClassLoader(parent_cld); 479 event.set_classLoaderData((intptr_t)cls->_cld); 480 event.set_classCount(cls->_classes_count); 481 event.set_chunkSize(cls->_chunk_sz); 482 event.set_blockSize(cls->_block_sz); 483 event.set_unsafeAnonymousClassCount(cls->_anon_classes_count); 484 event.set_unsafeAnonymousChunkSize(cls->_anon_chunk_sz); 485 event.set_unsafeAnonymousBlockSize(cls->_anon_block_sz); 486 event.set_hiddenClassCount(cls->_hidden_classes_count); 487 event.set_hiddenChunkSize(cls->_hidden_chunk_sz); 488 event.set_hiddenBlockSize(cls->_hidden_block_sz); 489 event.commit(); 490 return true; 491 } 492 493 void createEvents(void) { 494 _stats->iterate(this); 495 } 496 }; 497 498 class JfrClassLoaderStatsVMOperation : public ClassLoaderStatsVMOperation { 499 public: 500 JfrClassLoaderStatsVMOperation() : ClassLoaderStatsVMOperation(NULL) { } 501 502 void doit() { 503 JfrClassLoaderStatsClosure clsc; 504 ClassLoaderDataGraph::loaded_cld_do(&clsc); 505 clsc.createEvents(); | 463 event.set_unloadedClassCount(ClassLoadingService::unloaded_class_count()); 464 event.commit(); 465 } 466 467 class JfrClassLoaderStatsClosure : public ClassLoaderStatsClosure { 468 public: 469 JfrClassLoaderStatsClosure() : ClassLoaderStatsClosure(NULL) {} 470 471 bool do_entry(oop const& key, ClassLoaderStats* const& cls) { 472 const ClassLoaderData* this_cld = cls->_class_loader != NULL ? 473 java_lang_ClassLoader::loader_data_acquire(cls->_class_loader) : NULL; 474 const ClassLoaderData* parent_cld = cls->_parent != NULL ? 475 java_lang_ClassLoader::loader_data_acquire(cls->_parent) : NULL; 476 EventClassLoaderStatistics event; 477 event.set_classLoader(this_cld); 478 event.set_parentClassLoader(parent_cld); 479 event.set_classLoaderData((intptr_t)cls->_cld); 480 event.set_classCount(cls->_classes_count); 481 event.set_chunkSize(cls->_chunk_sz); 482 event.set_blockSize(cls->_block_sz); 483 event.set_hiddenClassCount(cls->_hidden_classes_count); 484 event.set_hiddenChunkSize(cls->_hidden_chunk_sz); 485 event.set_hiddenBlockSize(cls->_hidden_block_sz); 486 event.commit(); 487 return true; 488 } 489 490 void createEvents(void) { 491 _stats->iterate(this); 492 } 493 }; 494 495 class JfrClassLoaderStatsVMOperation : public ClassLoaderStatsVMOperation { 496 public: 497 JfrClassLoaderStatsVMOperation() : ClassLoaderStatsVMOperation(NULL) { } 498 499 void doit() { 500 JfrClassLoaderStatsClosure clsc; 501 ClassLoaderDataGraph::loaded_cld_do(&clsc); 502 clsc.createEvents(); |