首页 文章

为什么线程停止时间与java GC不同

提问于
浏览
0

当添加PrintGCApplicationStoppedTime以显示GC的线程停止时间时,我们可以看到不同的停止时间,如:2018-05-13T11:15:48.562 0800:51.190:应用程序线程停止的总时间:0.1729628秒,停止线程占用:0.0000526秒2018-05-13T11:15:48.621 0800:51.249:应用程序线程停止的总时间:0.0005166秒,停止线程:0.0000728秒

我们可以看到,第一个线程停止了173毫秒,但第二个线程不到1毫秒 . 为什么他们如此不同?什么是“停止时间”的确切含义(开始计数时和停止时) .

如果这是线程挂起的真实和准确的时间,是否意味着一个线程暂停了一段时间而其他线程仍然在GC运行时?

1 回答

  • 0

    选项名称 -XX+PrintGCApplicationStoppedTime 具有误导性 . 它报告所有JVM安全点(或Stop-the-World暂停) . 此外,GC自己的日志帐户只与GC相关的时间,而安全点流程本身可能只有更多的开销 .

    Here您可以在HotSpot JVM中找到有关安全点的更多信息 .

相关问题