为什么VisualVM没有显示所有正常的选项卡?

36
通常我在VisualVM中看到所有这些选项卡,用于本地运行的Java程序:

enter image description here

然而,我有一个本地程序,目前只显示概述和监视器(尽管通常会显示上面显示的所有内容):

enter image description here

有趣的是,VisualVM本身并不提供“Profile”选项卡:

enter image description here

所有展示的三个程序都使用相同的JVM和Java Home。
是什么控制了特定程序显示哪些选项卡?我如何将它们全部恢复,以便我的程序显示概述和监视器?
我使用的是Visual VM 1.3.5(截至本文日期最新版本)和JDK 1.7.0_17。

该程序会建立到外部站点的特定 https:// 连接。当我关闭此功能(因此不会发出任何请求)时,我可以在 VisualVM 中获取所有选项卡。嗯... - jwl
8个回答

24

我发现这是使用错误JDK版本的问题。在我的情况下,我的应用程序正在运行64位JDK,而我从32位JDK启动了VisualVM。 如果从与我的应用程序相同的JDK启动VisualVM,则一切正常。希望这能帮到你。


你能否也针对远程应用程序做到这一点(我的个人资料选项卡在远程应用程序中没有显示,只有本地)?谢谢。 - Diego Ramos
@DiegoRamos VisualVM不支持远程应用程序的分析: https://docs.oracle.com/javase/8/docs/technotes/guides/visualvm/applications_remote.html - user613114

13

你可能需要在应用程序上启用JMX端口。尝试将以下开关添加到您的VM中,看看是否再次出现选项卡:

-Dcom.sun.management.jmxremote.port=6789 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false


1
这些都是本地程序 - 这仍然适用吗? - jwl
我曾经想要对我的本地jboss进行分析,这种情况下确实有所不同。我不记得是否需要将jmx端口添加到VisualVM中,还是它自己找到了。 - Farzad
我已经尝试了所有建议的答案(验证jvisualvm使用与应用程序相同的Java版本,删除〜/ .visualvm文件夹,没有代理),但只有这一个有效,即使jvisualvm和应用程序在同一台机器上运行。 - streetturtle

5

3

正如大多数人提到的那样, 问题是由于virtualvm版本不匹配您的应用程序引起的。

此外, visualvm包含在支持JDK 9及以下版本的Oracle中。 如果您使用的是>9,请确保选择另一个分析工具。


1
对我有效的方法是指定“开始分析”的类。如果我留空,我就无法获得分析器选项卡。当我指定它时,我就可以了。我应该注意这是在Tomcat下运行的Web应用程序,所以我将org.apache.catalina.startup.**指定为起始类。

0

如果您正在运行本地应用程序,请检查代理是否已禁用,然后再运行VisualVM。


0
在我的情况下,问题是使用了错误的JDK版本。我的应用程序正在运行jdk1.7.0_80,而VisualVm正在运行jdk1.8.0_162。 将应用程序JDK版本从1.7.0_79更改为1.7.0_80即可解决问题。

0

我曾经遇到过类似的问题,VisualVM中的性能分析器选项卡失踪了。我使用的是Oracle JDK 1.8,想要对运行在Tomcat 8上的Web应用程序进行性能分析(包括JPA、Spring、Hibernate、Vaadin等)。

我尝试了所有提到的解决方案和其他许多在网上找到的方法,但遗憾的是,它们都未能解决缺失性能分析器选项卡问题。

因此,我转而使用Java Mission Control (JMC + Flight Recorder)性能分析工具,这是标准Oracle JDK的一部分(从JDK 1.7更新40开始),它非常好用。


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