为什么java.ci.totalTime大于sun.rt.safepointTimeJVM PerfCounters?

问题描述

我正在使用JVM的PerfCounters,但不明白为什么java.ci.totalTime比sun.rt.safepointTime大。

例如,当:
我像这样sun.gc.collector.0.time + sun.gc.collector.1.time = total_GC_time来计算total_GC_time。 该total_GC_time总是比sun.rt.safepointTime少,没关系。


但是我不明白为什么java.ci.totalTime比sun.rt.safepointTime大?

可能是java.ci.totalTime,它是后台操作,不会生成jvm暂停(安全点)

然后如何了解JIT在SafePoint暂停中花费多长时间?

解决方法

这些是完全无关的东西。

java.ci.totalTime是JIT编译花费的总时间。这与安全点无关。在应用程序线程运行时,JIT编译器在后台工作。