Java Mission Control (JMC) 6.0 在检查 JFR 飞行记录时不显示热方法

Java Mission Control (JMC) 6.0 does not show hot methods when examining a JFR flight recording

提问人:Andrew Parks 提问时间:6/11/2018 最后编辑:Andrew Parks 更新时间:8/8/2020 访问量:4807

问:

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

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

Older JMC version

Older JMC version

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

JMC 6.0

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

有没有办法显示热方法 %CPU 时间,或者此功能是否已从 JDK10 中的 JMC 6.0 中删除?

分析 java-10 jmc jfr

评论


答:

7赞 Klara 6/12/2018 #1

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

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

评论

1赞 Andrew Parks 6/13/2018
非常感谢你的回复,克拉拉。我现在看到我正在查看“堆栈跟踪”窗格,当在“大纲”窗格中选择“方法分析”项时显示该窗格。该窗格中的计数最多只有 77 个。我现在发现,如果我改为单击“大纲”窗格中的“事件浏览器”,我会看到一个不同的“堆栈跟踪”窗格,最大计数为 234,000。这给了我我想要的东西。我还看到我可以悬停百分比(尽管悬停框有问题,并且其中包含的信息没有完全显示)。这解决了问题,再次感谢。
0赞 Klara 6/14/2018
“方法分析”页面将仅显示“方法分析示例”事件中的堆栈跟踪,“事件浏览器”页面将(如果事件类型树中未选择任何内容)显示来自所有事件、分析、分配、异常、文件写入等的堆栈跟踪,因此将所有事件组合在一起可能会有点令人困惑。
0赞 Graham Leggett 10/30/2020
唉,我不完全理解这个答案。我是否正确地理解 JMC 在物理上删除了分析方法的功能,并将其重新添加到尚未发布的 JMC v8 中?查找代码热点的能力似乎完全缺失,这是分析的主要目的之一,我正在努力理解导致有人破坏它这么长时间的思维过程。
1赞 Hirt 11/2/2020
也许现在它不那么直观了,但您可以通过在堆栈跟踪视图中的最后一个方法帧上对方法进行分组来获得最热门的方法(自我时间)。
3赞 freedev 8/8/2020 #2

在撰写本文时,JMC 7.1.2 仍然没有提供查看 CPU 时间百分比的机会。我发现使用 VisualVM -> Sampler -> Display -> CPU 读取 jfr 文件很有帮助

VisualVM Sampler Display CPU

评论

0赞 Diego Ramos 5/6/2022
你有没有找到任何方法可以在 JMC 中可视化 CPU%?谢谢。
1赞 freedev 5/6/2022
嗨,@DiegoRamos,不...老实说,一段时间后,我意识到可视化 CPU% 并不是那么有用。使用率取决于许多因素,例如您的处理器有多快,例如,在非常快的处理器上,您可以获得很小的使用率。我想我必须更新我的答案,以更好地反映我所学到的东西。