Java Mission Control 7.1显示的方法分析样本太少

时间:2019-03-07 14:56:45

标签: jfr java-mission-control

有人问here类似的问题。

我正在使用根据instructions构建的JMC 7.1.0对Open JDK 11.0.2应用程序进行性能分析。

该应用程序使用了大约3个内核,没有过多的gc,只有一小部分线程正在执行实际上利用CPU的本机方法调用。

我正在使用默认方法10ms的采样间隔。 我通过使用以下命令在安全点之外启用了调试元数据:

-XX:+ UnlockDiagnosticVMOptions -XX:+ DebugNonSafepoints

抽取的样本数量比我预期的少得多。 保守地假设在每个采样点上运行非本机代码的cpu线程上有1个,我期望每秒100个采样。但是我每秒只能看到1个样本。

cpu usage & method samples

机器本身通常处于50%空闲状态,因此采样线程不会饿死。

是什么原因导致样本数量如此之低?

1 个答案:

答案 0 :(得分:1)

这可能是由于JDK 11中引入的一个错误,该错误出现在具有多个线程的应用程序中。它已在JDK 12中修复,并反向移植到11.0.3。

有关详细信息,请参见:

https://bugs.openjdk.java.net/browse/JDK-8215727

关于采样间隔。默认速率为20毫秒,但这并不意味着将有50个样本/秒。这是JVM尝试采样一个或更多线程的时间间隔。

相关问题