449 event.set_activeCount(ThreadService::get_live_thread_count()); 450 event.set_daemonCount(ThreadService::get_daemon_thread_count()); 451 event.set_accumulatedCount(ThreadService::get_total_thread_count()); 452 event.set_peakCount(ThreadService::get_peak_thread_count()); 453 event.commit(); 454 } 455 456 TRACE_REQUEST_FUNC(ClassLoadingStatistics) { 457 EventClassLoadingStatistics event; 458 event.set_loadedClassCount(ClassLoadingService::loaded_class_count()); 459 event.set_unloadedClassCount(ClassLoadingService::unloaded_class_count()); 460 event.commit(); 461 } 462 463 class JfrClassLoaderStatsClosure : public ClassLoaderStatsClosure { 464 public: 465 JfrClassLoaderStatsClosure() : ClassLoaderStatsClosure(NULL) {} 466 467 bool do_entry(oop const& key, ClassLoaderStats* const& cls) { 468 const ClassLoaderData* this_cld = cls->_class_loader != NULL ? 469 java_lang_ClassLoader::loader_data(cls->_class_loader) : (ClassLoaderData*)NULL; 470 const ClassLoaderData* parent_cld = cls->_parent != NULL ? 471 java_lang_ClassLoader::loader_data(cls->_parent) : (ClassLoaderData*)NULL; 472 EventClassLoaderStatistics event; 473 event.set_classLoader(this_cld); 474 event.set_parentClassLoader(parent_cld); 475 event.set_classLoaderData((intptr_t)cls->_cld); 476 event.set_classCount(cls->_classes_count); 477 event.set_chunkSize(cls->_chunk_sz); 478 event.set_blockSize(cls->_block_sz); 479 event.set_unsafeAnonymousClassCount(cls->_anon_classes_count); 480 event.set_unsafeAnonymousChunkSize(cls->_anon_chunk_sz); 481 event.set_unsafeAnonymousBlockSize(cls->_anon_block_sz); 482 event.commit(); 483 return true; 484 } 485 486 void createEvents(void) { 487 _stats->iterate(this); 488 } 489 }; 490 491 class JfrClassLoaderStatsVMOperation : public ClassLoaderStatsVMOperation { | 449 event.set_activeCount(ThreadService::get_live_thread_count()); 450 event.set_daemonCount(ThreadService::get_daemon_thread_count()); 451 event.set_accumulatedCount(ThreadService::get_total_thread_count()); 452 event.set_peakCount(ThreadService::get_peak_thread_count()); 453 event.commit(); 454 } 455 456 TRACE_REQUEST_FUNC(ClassLoadingStatistics) { 457 EventClassLoadingStatistics event; 458 event.set_loadedClassCount(ClassLoadingService::loaded_class_count()); 459 event.set_unloadedClassCount(ClassLoadingService::unloaded_class_count()); 460 event.commit(); 461 } 462 463 class JfrClassLoaderStatsClosure : public ClassLoaderStatsClosure { 464 public: 465 JfrClassLoaderStatsClosure() : ClassLoaderStatsClosure(NULL) {} 466 467 bool do_entry(oop const& key, ClassLoaderStats* const& cls) { 468 const ClassLoaderData* this_cld = cls->_class_loader != NULL ? 469 java_lang_ClassLoader::loader_data_acquire(cls->_class_loader) : NULL; 470 const ClassLoaderData* parent_cld = cls->_parent != NULL ? 471 java_lang_ClassLoader::loader_data_acquire(cls->_parent) : NULL; 472 EventClassLoaderStatistics event; 473 event.set_classLoader(this_cld); 474 event.set_parentClassLoader(parent_cld); 475 event.set_classLoaderData((intptr_t)cls->_cld); 476 event.set_classCount(cls->_classes_count); 477 event.set_chunkSize(cls->_chunk_sz); 478 event.set_blockSize(cls->_block_sz); 479 event.set_unsafeAnonymousClassCount(cls->_anon_classes_count); 480 event.set_unsafeAnonymousChunkSize(cls->_anon_chunk_sz); 481 event.set_unsafeAnonymousBlockSize(cls->_anon_block_sz); 482 event.commit(); 483 return true; 484 } 485 486 void createEvents(void) { 487 _stats->iterate(this); 488 } 489 }; 490 491 class JfrClassLoaderStatsVMOperation : public ClassLoaderStatsVMOperation { |