我知道我们可以从GarbageCollectionNotificationInfo对象获取GC持续时间,但是持续时间似乎是整个持续时间(例如,我发现一次超过5秒),这可能远远大于实际停止世界暂停(通常从我的经验不到1秒),无论如何我们可以实际停止世界暂停持续时间吗?要么以某种方式从可用的来源计算(我不认为GarbageCollectionNotificationInfo为我们提供这些细节?但我可能是错的)或任何其他方式?我知道jstat工具打印的FGCT列似乎正好反映了世界暂停时间的停止,他们怎么做呢?提前谢谢!
答案 0 :(得分:2)
要在VM日志输出中获取所有STW暂停,您需要传递以下两个选项。这包括非GC安全点。
-XX:+PrintSafepointStatistics –XX:PrintSafepointStatisticsCount=1
另外还有-XX:+PrintGCApplicationStoppedTime
请记住,非安全点事物也可能导致暂停(例如内核的线程调度程序)。有jHiccup来衡量这些。