4

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

但是当我使用Java Mission Control (JMC)分析应用程序时Hot MethodsCode选项卡列表完全不同。事实上,几乎没有任何进行外部 HTTP 调用的方法出现在 JMC 列表中。

有人可以告诉我:-

  1. Hot Methods(下)是Code section基于 CPU 时间还是挂钟时间?
  2. 有没有办法可以查看实际上花费更多挂钟时间的方法列表?
  3. 如果 JMC 不支持显示列表,Hot Methods还有其他工具可以显示这个吗?
4

1 回答 1

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

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

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

于 2018-06-13T10:45:54.393 回答