提问者:小点点

JavaVisualVM缺少的功能


我有一个Java的应用程序,我想使用JavaVisualVM(jVisualvm)来监控它。

但是,在VisualVM窗口中只能看到很少的数据。此外,我不能进行堆转储。

这是它的外观截图,以及我编写的另一个测试应用程序:

我可以监控内存使用、加载的类和线程。堆转储、执行GC以及采样被禁用。

我已经尝试将-Dcom.sun.management. jxmRemote添加到VM参数中,如下所述。这显示在安装详细信息窗口中。但是,它不会出现在Java进程参数中。(应该吗?)

我还尝试单击测试应用程序中的按钮,直到发生OutOfMemoryError。没有堆转储;这并不奇怪,因为OOME上的堆转储被禁用了。

我能做些什么来解决这个问题?


共2个答案

匿名用户

我有这个问题,因为我运行JVisualVM从不同的JRE/JDK安装比目标进程。这两个似乎必须来自同一个地方,或者它灰色的堆转储按钮。

匿名用户

不同的Java版本似乎有问题。

长话短说:如果JDK过时,请重新安装它,并从C:\Windows\System32C:\Windows\SysWOW64中删除Java可执行文件。

首先,我想告诉你,我的电脑上有多个版本的Java。我的JDK是32位的,因为有些驱动程序不是用64位Java运行的。此外,我安装了32位和64位JRE,后者是为了Java游戏更好的性能。

我的JDK是版本7,更新40。VisualVM也是那个版本。然而,我的带有自动更新的JRE是版本7,更新45。

java-version告诉我它是45版的,所以我认为问题不在那里。

然后,我通过控制面板检查了版本。我现在知道我的JDK已经过时了,所以我卸载并重新下载了它。

卸载从系统路径中删除了Java,因此jVisual alvm无法运行。我将其添加到路径中。现在应用程序和VisualVM都正常运行,但问题仍然存在。

最后一个问题是系统使用的是C:\Windows\System32中的java. exe而不是JDK的。到目前为止,它似乎是最新的一个,但可能是JRE安装在与VisualVM(=JDK)不同的位置。

最后,我只是删除了C:\Windows\System32C:\Windows\SysWOW64中的Java可执行文件。