Java任务控制(JMC)6.0在检查JFR飞行记录时不会显示热方法。

12

在运行应用程序时使用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中已经删除了此功能?

2个回答

7
百分比列不是CPU时间,而是方法样本总数的百分比。在JMC 6.0中,相同的信息显示为计数列的背景,如果您悬停在该列上以获取工具提示,则可能会出现百分比数字。我知道您不是第一个错过百分比列的人,在JMC Jira中有一个增强请求:https://bugs.openjdk.java.net/browse/JMC-5721

1
非常感谢您的回复,Klara。我现在明白了,我看到的是“堆栈跟踪”窗格,当在“大纲”窗格中选择“方法分析”项目时,它会显示出来。该窗格中的计数仅最多为77。我现在发现,如果我改为在大纲窗格中点击“事件浏览器”,我会看到一个不同的“堆栈跟踪”窗格,最大计数为234,000。这正是我要找的。我还发现,我可以悬停查看百分比(虽然悬停框有点问题,其中包含的信息没有完全显示)。这解决了问题,再次感谢。 - Andrew Parks
方法分析页面仅会显示来自方法分析示例事件的堆栈跟踪,如果在事件类型树中没有选择任何内容,则事件浏览器页面将显示所有事件的堆栈跟踪,包括分析、分配、异常、文件写入等等,因此将它们混合在一起可能会有些混乱。 - Klara
唉,我并不完全理解这个答案。我的理解是JMC在物理上删除了对方法进行分析的能力,并在尚未发布的JMC v8中重新添加了此功能?似乎完全找不到查找代码热点的能力,而这是分析的主要目的之一,我很难理解会导致某人长期破坏这一点的思维过程。 - Graham Leggett
1
也许现在这个方法不太直观,但你可以通过将方法分组于堆栈跟踪视图中的最后一个方法框架来获取最热门的方法(自我时间)。 - Hirt

3

截至撰写本文时,JMC 7.1.2仍无法查看CPU使用百分比。我发现可以使用VisualVM来帮助读取jfr文件 -> Sampler -> Display -> CPU。

VisualVM Sampler Display CPU


你有找到任何在JMC中可视化CPU%的方法吗?谢谢。 - Diego Ramos
1
嗨@DiegoRamos,坦白说,经过一段时间后,我意识到可视化CPU%并不是很有用。使用率%取决于许多因素,例如处理器的速度,例如在非常快的处理器上,您可能会看到较小的使用率%。我认为我必须更新我的答案,以更好地反映我所学到的内容。 - freedev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接