VisualVM无法打开本地虚拟机进行分析。

3
我正在尝试使用VisualVM打开本地Java应用程序进行分析,但自从上周最后一次使用以来,它突然停止工作。我可以在应用程序框中看到程序,但如果我尝试打开从cmd行启动的程序或任何其他Java程序(如eclipse),它将只是挂起,状态栏显示正在打开。如果我在它尝试打开我的应用程序时选择另一个虚拟机来打开,visualVM将锁定。
请注意,我可以打开和分析visualVM JVM,但不能打开其他JVM。
除了执行包括内核在内的一般OS更新之外,我没有更改任何设置。我确保我的/tmp/hsperfdata_myusername可访问,并且当我从命令行启动visual VM、eclipse或我的自己的Java程序时,我可以在文件夹中看到与进程pid匹配的文件数。我尝试以root用户身份启动我的程序和visualvm并尝试它,但没有任何区别。我已删除我的.visualvm文件夹以清除任何问题,但它不起作用,visualvm的日志文件没有提到任何错误。
我正在运行带有Java 7_u45-b18的Fedora 19。
当我启动visual vm时,会打开一个端口TCP localhost6.localdomain6:35138(LISTEN)。
如果我打开自己的应用程序或eclipse并将其保留10分钟,它最终会连接(以前是立即),但是CPU分析和GC命令被禁用,这正是我想要的。
我知道您需要为远程连接指定JMX端口,但这全部都是本地的,所以我不知道它为什么突然挂了!任何帮助将不胜感激。

注意:我通过添加以下JVM参数-Djava.rmi.server.hostname=localhost成功使其工作,尽管它并没有解释为什么在出现问题之前可以正常工作。即使使用该参数,如果我从Eclipse的调试模式启动我的应用程序,它也无法工作。 - daedalus
谢谢,这也帮助了我!在我的情况下,它从未起作用(打开时挂起),无论是下载的还是JDK提供的版本。使用此选项可以进行分析。[编辑]:不,它不起作用,它只能用于自身分析,即VisualVM... - Majakovskij
使用VM标志-XX:+StartAttachListener也可能有所帮助。 - daedalus
2个回答

6

前往运行配置 -> 参数 -> VM参数,如果您想要分析本地进程,请添加以下参数: -Djava.rmi.server.hostname=localhost


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接