【发布时间】:2017-07-08 23:07:36
【问题描述】:
Java 的垃圾收集器 (GC) 并不总是停止主线程。它可能会阻塞所有线程,或者只是并行运行而不暂停其他线程。
我可以通过使用来测量总垃圾收集时间
garbageCollectorMXBean.getCollectionTime(); 在程序结束时,或通过使用 -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -verbose:gc 运行 VM。
但是,我想测量主线程被阻塞(即暂停)的 GC 部分,以便我可以测量主线程运行的确切时间。可以测量吗?
【问题讨论】:
-
请编辑问题以阐明您是要测量 GC 暂停还是主线程的运行时间。这是两个完全不同的指标,一个不是从另一个派生而来的。
-
时间 1) 主线程未被 GC 停止,或 2) 不在 VM 安全点中,或 3) 实际在 CPU 上运行 - 这些都是不同的时间。跨度>
标签: java multithreading performance garbage-collection performance-testing