equal
deleted
inserted
replaced
43 #include "jfr/periodic/jfrThreadCPULoadEvent.hpp" |
43 #include "jfr/periodic/jfrThreadCPULoadEvent.hpp" |
44 #include "jfr/periodic/jfrThreadDumpEvent.hpp" |
44 #include "jfr/periodic/jfrThreadDumpEvent.hpp" |
45 #include "jfr/periodic/jfrNetworkUtilization.hpp" |
45 #include "jfr/periodic/jfrNetworkUtilization.hpp" |
46 #include "jfr/recorder/jfrRecorder.hpp" |
46 #include "jfr/recorder/jfrRecorder.hpp" |
47 #include "jfr/support/jfrThreadId.hpp" |
47 #include "jfr/support/jfrThreadId.hpp" |
|
48 #include "jfr/utilities/jfrThreadIterator.hpp" |
48 #include "jfr/utilities/jfrTime.hpp" |
49 #include "jfr/utilities/jfrTime.hpp" |
49 #include "jfrfiles/jfrPeriodic.hpp" |
50 #include "jfrfiles/jfrPeriodic.hpp" |
50 #include "logging/log.hpp" |
51 #include "logging/log.hpp" |
51 #include "memory/heapInspection.hpp" |
52 #include "memory/heapInspection.hpp" |
52 #include "memory/resourceArea.hpp" |
53 #include "memory/resourceArea.hpp" |
55 #include "runtime/flags/jvmFlag.hpp" |
56 #include "runtime/flags/jvmFlag.hpp" |
56 #include "runtime/globals.hpp" |
57 #include "runtime/globals.hpp" |
57 #include "runtime/os.hpp" |
58 #include "runtime/os.hpp" |
58 #include "runtime/os_perf.hpp" |
59 #include "runtime/os_perf.hpp" |
59 #include "runtime/thread.inline.hpp" |
60 #include "runtime/thread.inline.hpp" |
60 #include "runtime/threadSMR.hpp" |
|
61 #include "runtime/sweeper.hpp" |
61 #include "runtime/sweeper.hpp" |
62 #include "runtime/vmThread.hpp" |
62 #include "runtime/vmThread.hpp" |
63 #include "services/classLoadingService.hpp" |
63 #include "services/classLoadingService.hpp" |
64 #include "services/management.hpp" |
64 #include "services/management.hpp" |
65 #include "services/threadService.hpp" |
65 #include "services/threadService.hpp" |
414 ResourceMark rm; |
414 ResourceMark rm; |
415 int initial_size = Threads::number_of_threads(); |
415 int initial_size = Threads::number_of_threads(); |
416 GrowableArray<jlong> allocated(initial_size); |
416 GrowableArray<jlong> allocated(initial_size); |
417 GrowableArray<traceid> thread_ids(initial_size); |
417 GrowableArray<traceid> thread_ids(initial_size); |
418 JfrTicks time_stamp = JfrTicks::now(); |
418 JfrTicks time_stamp = JfrTicks::now(); |
|
419 |
419 { |
420 { |
420 // Collect allocation statistics while holding threads lock |
421 JfrJavaThreadIterator iter; |
421 MutexLocker ml(Threads_lock); |
422 while (iter.has_next()) { |
422 for (JavaThreadIteratorWithHandle jtiwh; JavaThread *jt = jtiwh.next(); ) { |
423 JavaThread* const jt = iter.next(); |
|
424 assert(jt != NULL, "invariant"); |
|
425 |
423 allocated.append(jt->cooked_allocated_bytes()); |
426 allocated.append(jt->cooked_allocated_bytes()); |
424 thread_ids.append(JFR_THREAD_ID(jt)); |
427 thread_ids.append(JFR_THREAD_ID(jt)); |
425 } |
428 } |
426 } |
429 } |
427 |
430 |