如何在VisualVM中显示调用树?

2022-09-02 22:05:43

使用 VisualVM 分析应用程序的 CPU 时间时,可以在拍摄快照后看到“调用树”选项卡。但在我的情况下,调用树只显示一些RMI TCP类和方法,而没有我的应用程序的单个类。

如何显示正确的呼叫树?

enter image description here


答案 1

可能性

  1. “探查器”设置将排除您的类。更改探查器设置中的排除项。
  2. 在探查器运行时,应用程序处于空闲状态。附加探查器,然后使程序执行要分析的代码。
  3. 您可能正在分析错误的 JVM。RMI使得调入另一个JVM变得非常容易。也许您需要分析该 RMI 连接的另一端。

“探查器”选项卡上有一个“设置”复选框。如果选中“设置”框,将显示另一个面板,用于配置探查器收集数据的类。

这是一个截图。screeshot of jvisualvm with Profiler "Settings" box checked.


答案 2

正如@Holger所说,探查器/采样器的快照应该只显示正在运行的线程。但是,根据个人经验,我发现采样快照有时会显示更多的线程,而不是分析线程。

此外,VisualVM 的采样器使您能够实时查看每个线程的 CPU 时间(无需拍摄快照),无论它是在运行、休眠、等待还是监视。

我不明白为什么会发生这种情况,因为分析应该比采样更准确(请参阅此处的差异),但它确实如此。

总而言之,我建议您尝试采样器,看看它是否有效。


推荐