【问题标题】:Java Mission Control (JMC) 6.0 does not show hot methods when examining a JFR flight recording检查 JFR 飞行记录时,Java Mission Control (JMC) 6.0 不显示热方法
【发布时间】:2018-11-20 20:12:45
【问题描述】:

在正在运行的应用程序上使用 Java Flight Recording 功能后,Java 的 JMC 可用于检查生成的 JFR 文件以显示热方法以及每个方法所花费的 CPU 时间百分比。这对于分析应用程序和识别瓶颈非常有用。

以下是以前在旧版本 JMC 中可能实现的示例:

在与 Java 10 捆绑的 JMC 6.0 中似乎缺少此屏幕。这是我在 Java 10 捆绑的 JMC 6.0 中看到的示例:

似乎有一个基本的方法调用计数,但没有列出百分比 CPU 时间。似乎没有添加缺失列的选项。

有没有办法显示热方法%CPU时间,或者这个功能已经从JDK10的JMC 6.0中删除了?

【问题讨论】:

    标签: profiling java-10 jmc jfr


    【解决方案1】:

    百分比列不是cpu时间,而是方法样本总数的百分比。 在 JMC 6.0 的“计数”列中显示相同的信息作为背景,我相信如果您将鼠标悬停在该列上以获取工具提示,则可能会有一个百分比数字。

    我知道你不是第一个错过百分比列的人,JMC Jira 中有一个增强请求:https://bugs.openjdk.java.net/browse/JMC-5721

    【讨论】:

    • 非常感谢您的回复,克拉拉。我现在看到我正在查看在“大纲”窗格中选择“方法分析”项时显示的“堆栈跟踪”窗格。该窗格中的计数最多仅为 77。我现在发现,如果我改为单击大纲窗格中的“事件浏览器”,我会看到一个不同的“堆栈跟踪”窗格,最大计数为 234,000。这正是我想要的。我还看到我可以悬停百分比(尽管悬停框有问题并且其中包含的信息没有完全显示)。这解决了问题,再次感谢。
    • 方法分析页面将仅显示来自方法分析示例事件的堆栈跟踪,事件浏览器页面将(如果在事件类型树中未选择任何内容)显示来自所有事件、分析、分配、异常,文件写入等,因此将所有内容组合在一起可能会有点混乱。
    • 唉,我不完全理解这个答案。我是否正确理解 JMC 在物理上删除了分析方法的能力,并将其添加回 JMC 尚未发布的 v8 中?查找代码热点的能力似乎完全消失了,这是分析的主要目的之一,我正在努力理解导致有人长期破坏它的思维过程。
    • 现在可能不太直观,但是通过在堆栈跟踪视图的最后一个方法帧上对方法进行分组,您可以获得最热门的方法(自我时间)。
    【解决方案2】:

    在编写 JMC 7.1.2 时,仍然没有机会查看 CPU 时间百分比。我发现使用VisualVM -> Sampler -> Display -> CPU

    对读取 jfr 文件有很大帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-04
      • 2016-06-07
      • 2015-01-25
      • 1970-01-01
      • 2015-04-30
      • 2019-05-21
      • 2019-01-05
      • 2019-09-11
      相关资源
      最近更新 更多