Java 在VisualVM中向下钻取

Java 在VisualVM中向下钻取,java,visualvm,Java,Visualvm,我刚刚安装了Java1.6_07,因此可以尝试使用VisualVM进行评测。它告诉我,我的应用程序60%的时间都花在sun.rmi.transport.tcp.tcpttransport$ConnectionHandler.run 我怎样才能知道它当时在做什么?它有多少时间是在等待某个东西来调用它,还是在做其他事情?什么叫它,什么叫它?我似乎找不到任何方法可以像Quantify或Perl profiler中那样深入到更深的层次。您的应用程序是否通过TCP使用RMI?如果不是,这是否可能是由检测V

我刚刚安装了Java1.6_07,因此可以尝试使用VisualVM进行评测。它告诉我,我的应用程序60%的时间都花在
sun.rmi.transport.tcp.tcpttransport$ConnectionHandler.run


我怎样才能知道它当时在做什么?它有多少时间是在等待某个东西来调用它,还是在做其他事情?什么叫它,什么叫它?我似乎找不到任何方法可以像Quantify或Perl profiler中那样深入到更深的层次。

您的应用程序是否通过TCP使用RMI?如果不是,这是否可能是由检测VM引起的海森堡?我假设VisualVM必须使用RMI调用来找出JVM中发生了什么…

我没有VisualVM的经验——但JRockit的探查器提供了这些信息;你可以考虑使用它。


更新:可以找到一个包含java探查器列表的问题,供有足够代表性的用户查看已删除的问题。

我已经开始使用。它允许分析CPU并使用调用图向下钻取。试试看。

使用1.3.2也可以看到这是我遇到的报告挂断。在1.3.2中,如果执行线程转储并查找此调用,您可以看到它在该线程的调用链中的位置。不确定尤瓦尔F指的是这个还是别的什么。查一下呼叫链,看看它在呼叫什么,依此类推,往下看,看看它被什么人呼叫,依此类推。

实际上,我最后使用了jprofiler的10天评估。由于我无法说服我的老板花掉这500美元,下次我需要做任何分析时,我会烧掉很多虚假的电子邮件地址;也许这更合适。JRockit任务控制新许可证没有这样的时间限制。它可以免费用于开发和评估。我想也是这样,我的应用程序根本不使用任何RMI,并且正在生成大量ObjectOutputStream中使用的Object[]实例。