通过使用JMC进行性能分析,在挂钟时间方面获得昂贵的Java方法

时间:2016-07-07 06:40:18

标签: java java-8 profiling jmc jfr

我有一个java应用程序,它会进行大量的外部http调用。为了确定我在所有方法中使用System.currentTimeMillis()的热方法,我观察到实际进行外部HTTP调用的方法是热门方法,这是非常期待的。

但是当我使用Java Mission Control(JMC)分析应用时,Hot Methods标签列表下的Code完全不同。事实上,几乎所有进行外部HTTP调用的方法都没有出现在JMC列表中。

有人可以告诉我: -

  1. Hot MethodsCode section下)是否基于CPU时间或 挂钟时间?
  2. 有没有办法可以查看哪些方法列表 实际上是花了更多的时钟?
  3. 如果JMC不支持显示Hot Methods列表,是否有其他工具可以显示此内容?

1 个答案:

答案 0 :(得分:0)

  1. 直方图基于执行Java代码的线程的CPU时间。

  2. 不,但有一个视图,您可以看到由锁争用,套接字和文件I / O引起的延迟,但它不会给出聚合时间,只有异常值。

  3. JDK 10有一个新事件,它对本机方法进行采样,无论该方法是在运行代码还是在等待。它可能会显示等待I / O的方法但是在JMC中没有可视化的事件。