使用VisualVM分析应用程序的CPU时间时,可以在拍摄快照后看到“调用树”选项卡。但就我而言,调用树只显示了一些RMI TCP类和方法,但没有单独的应用程序类。
如何显示正确的呼叫树?
答案 0 :(得分:10)
可能性
“Profiler”选项卡上有一个“设置”复选框。如果选中“设置”框,则会显示另一个面板,允许您配置探查器收集数据的类。
这是截图。
答案 1 :(得分:2)
正如@Holger所说,探查器的/采样器的快照应该只显示正在运行的线程。 然而,我根据个人经验发现,采样快照有时会显示更多线程来分析那些。
此外,VisualVM的采样器使您能够实时查看每个线程的CPU时间(无需拍摄快照),无论它是在运行,休眠,等待还是监视。
我不明白为什么会发生这种情况,因为分析应该比抽样(see here the difference)更准确,但确实如此。
总而言之,我建议您尝试使用该采样器,看看它是否有效。
答案 2 :(得分:0)
调用树仅显示在采样/分析期间确实运行的线程(一直没有休眠),并且其堆栈跟踪未完全过滤掉。在开始采样或分析之前设置过滤器。启用右上角的“设置”复选框后,您可以设置过滤器。在采样器的情况下,您还可以设置采样频率,这是性能和风险之间的权衡,以监督线程的运行状态。但可能是您的应用程序在分析期间确实处于空闲状态。然后,您看到的唯一线程是维护与VisualVM的连接的RMI线程。