java如何在VisualVM中显示调用树? 5 日,23 小时 Questions & Answers 12857 使用VisualVM评测应用程序的CPU时间时,在拍摄快照后可以看到“调用树”选项卡。但是在我的例子中,调用树只显示了一些RMI TCP类和方法,而没有显示我的应用程序的单个类 如何显示正确的呼叫树
# 1 楼答案 调用树仅显示在采样/分析期间实际运行的线程(没有一直处于休眠状态),并且其堆栈跟踪没有被完全过滤掉。在开始采样或分析之前设置过滤器。启用右上角的“设置”复选框时,可以设置过滤器。对于采样器,您还可以设置采样频率,这是性能和风险之间的权衡,以监督线程的运行状态。但可能是您的应用程序在分析过程中确实处于空闲状态。然后,您看到的唯一线程是维护到VisualVM的连接的RMI线程
# 2 楼答案 正如@Holger所说,分析器/采样器的快照应该只显示正在运行的线程然而,根据个人经验,我发现采样快照有时会显示比分析快照更多的线程 此外,VisualVM的采样器使您能够实时查看每个线程的CPU时间(无需拍摄快照),无论它是在运行、睡眠、等待还是监视 我不明白为什么会发生这种情况,因为分析应该比采样(see here the difference)更准确,但确实如此 总而言之,我建议你试试取样器,看看它是否有效
# 3 楼答案 可能性 探查器设置不包括您的类。更改探查器设置中的排除项李> 探查器运行时,应用程序处于空闲状态。附加探查器,然后使程序执行要评测的代码李> 您可能分析了错误的JVM。RMI使调用另一个JVM变得非常容易。也许你需要分析RMI连接的另一面李> “探查器”选项卡上有一个“设置”复选框。如果选中“设置”框,将显示另一个面板,用于配置探查器收集数据的类 这是一个截图。
# 1 楼答案
调用树仅显示在采样/分析期间实际运行的线程(没有一直处于休眠状态),并且其堆栈跟踪没有被完全过滤掉。在开始采样或分析之前设置过滤器。启用右上角的“设置”复选框时,可以设置过滤器。对于采样器,您还可以设置采样频率,这是性能和风险之间的权衡,以监督线程的运行状态。但可能是您的应用程序在分析过程中确实处于空闲状态。然后,您看到的唯一线程是维护到VisualVM的连接的RMI线程
# 2 楼答案
正如@Holger所说,分析器/采样器的快照应该只显示正在运行的线程然而,根据个人经验,我发现采样快照有时会显示比分析快照更多的线程
此外,VisualVM的采样器使您能够实时查看每个线程的CPU时间(无需拍摄快照),无论它是在运行、睡眠、等待还是监视
我不明白为什么会发生这种情况,因为分析应该比采样(see here the difference)更准确,但确实如此
总而言之,我建议你试试取样器,看看它是否有效
# 3 楼答案
可能性
“探查器”选项卡上有一个“设置”复选框。如果选中“设置”框,将显示另一个面板,用于配置探查器收集数据的类
这是一个截图。![screeshot of jvisualvm with Profiler "Settings" box checked.](https://i.stack.imgur.com/LieA0.png)