如何测量Java GC停止世界时间



我知道我们可以从GarbageCollectionNotificationInfo对象中获得GC持续时间,但持续时间似乎是整个持续时间(例如,我发现5+秒一次),这可能比实际的停止世界暂停(通常少于1秒从我的经验)大得多,无论如何我们可以得到实际的停止世界暂停持续时间?要么以某种方式从可用的来源计算(我不认为GarbageCollectionNotificationInfo为我们提供了这些细节?但我可能错了)或其他方式?我知道jstat工具打印FGCT列,这似乎正好反映了停止世界暂停时间,他们是如何做到的?提前感谢!

要获得VM日志输出中的所有STW暂停,您需要传递以下两个选项。这包括非gc安全点。

-XX:+PrintSafepointStatistics –XX:PrintSafepointStatisticsCount=1

还有-XX:+PrintGCApplicationStoppedTime

请记住,非安全点的东西也可以引起暂停(例如内核的线程调度程序)。jHiccup可以测量这些

最新更新