我刚刚安装了Java 1.6_07,所以我可以尝试使用VisualVM进行分析。它告诉我,我的应用程序花费了60%的时间在sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run
如何在这段时间内了解它的作用?它有多少时间等待某种东西来称呼它,或做其他事情?什么叫它,它叫什么?我似乎无法找到任何方法深入到更深层次,就像Quantify或Perl剖析器一样。
答案 0 :(得分:5)
我没有使用VisualVM的经验 - 但JRockit的探查器 提供了这些信息;你可以考虑改用它。
更新:对于具有足够代表的用户,可以找到包含java个人资料工作列表的问题here,以查看已删除的问题。
答案 1 :(得分:3)
您的应用是否使用RMI over TCP?如果没有,这可能是由于检测VM导致的heisenbug吗?我假设VisualVM必须使用RMI调用来弄清楚JVM中发生了什么....
答案 2 :(得分:1)
我已开始使用the new VisualVM 1.2。它允许使用调用图分析CPU和向下钻取。尝试一下。
答案 3 :(得分:1)
使用1.3.2也看到这是我正在报告的挂断。在1.3.2中,如果您进行线程转储并查找此调用,您可以看到它在该线程的调用链中的位置。不确定Yuval F是指这个还是别的什么。查看调用链以查看调用的内容等等,查看调用它的内容等等。