【问题标题】:Why does the "Total Time" column in visualvm differ from runtime duration?为什么 visualvm 中的“总时间”列与运行时持续时间不同?
【发布时间】:2019-10-09 05:47:34
【问题描述】:

我已经在java 进程上的visualvm 中运行 CPU Profiler 45 分钟,但是“总时间”列仅显示大约 104,000ms 已过去(即 104 秒),并且它会增长但它慢慢长大。

这显然没有映射到真实的物理时间,因为我预计会看到 45*60*1000 毫秒(不是 104*1000)。它在测量什么?

【问题讨论】:

  • 您能否提供一个屏幕,以便我们知道您的要求是什么?
  • 你问的是total method time in visualvm吗?
  • @Andronicus 我在问题中包含了一张图片和更多信息
  • @Naman 是的,这就是我要说的。我已经运行分析器 45 分钟,但 Total Time 列仅显示 104 秒。

标签: java profiling visualvm jvisualvm


【解决方案1】:

正如工具提示悬停所说“在此方法的所有调用中花费的时间(包括进一步的方法调用)”。 IE。方法特定的挂钟时间,包括在方法中完成的调用。

您可以将其与总 CPU 时间进行比较,以了解处理器使用时间的效率。

【讨论】:

  • 为什么当我运行分析器 45 分钟后,列总和为 104 秒?
  • @ABC 因为您有其他程序正在运行。您不认为 CPU 专用于您的程序,是吗?此外,除非你真的在消耗 CPU,否则时间可能不会太长,这就是为什么热点更容易检测和改进的原因。
  • 我有一个繁忙的 while 循环,我认为它会占用 CPU 100% 的时间?
  • 很难说。尝试在那个循环中计算哈希值,看看它在你实际做某事时是否会有所不同。
  • 采样器往往是一个更有用的工具,至少在我的经验中是这样。没有分析器的开销,并且仍然有效地找到热点。
猜你喜欢
  • 1970-01-01
  • 2012-05-25
  • 2016-09-22
  • 1970-01-01
  • 2020-09-24
  • 1970-01-01
  • 1970-01-01
  • 2012-08-21
  • 2021-08-20
相关资源
最近更新 更多