Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java VisualVM缺少功能_Java_Eclipse_Jvisualvm_Heap Dump - Fatal编程技术网

Java VisualVM缺少功能

Java VisualVM缺少功能,java,eclipse,jvisualvm,heap-dump,Java,Eclipse,Jvisualvm,Heap Dump,我有一个Java应用程序,我想使用Java VisualVM(jvisualvm)来监视它 然而,在VisualVM窗口中几乎看不到数据。此外,我不能接受堆转储 下面是一个屏幕截图,上面是我编写的另一个测试应用程序: 我可以监控内存使用情况、加载的类和线程。堆转储、执行GC以及采样被禁用 我已尝试将-Dcom.sun.management.jxmremote添加到VM参数中,如前所述。这将显示在“安装详细信息”窗口中。但是,它不会出现在Java进程参数中。(应该吗?) 我还尝试单击测试应用程

我有一个Java应用程序,我想使用Java VisualVM(
jvisualvm
)来监视它

然而,在VisualVM窗口中几乎看不到数据。此外,我不能接受堆转储

下面是一个屏幕截图,上面是我编写的另一个测试应用程序:

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

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

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


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

不同的Java版本似乎有问题

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

首先,我想告诉你,我的计算机上有多个Java版本。我的JDK是32位的,因为有些驱动程序没有使用64位Java运行。此外,我还安装了32位和64位JRE,后者可以提高Java游戏的性能

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

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

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

卸载从系统路径中删除的Java,因此
jvisualvm
不会运行。我把它添加到路径中。现在应用程序和VisualVM都正常运行,但问题仍然存在

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


最后,我刚刚删除了
C:\Windows\System32
C:\Windows\SysWOW64

中的Java可执行文件。我遇到了这个问题,因为我是从与目标进程不同的JRE/JDK安装中运行JVisualVM的。看起来这两个堆必须来自同一个地方,否则会使“堆转储”按钮变灰。

您可以在visual VM中进行堆转储。我想说的是,“堆转储”按钮可以工作。但是请注意,对于大堆(比如>500MB/1GB),这将需要一些时间。您可以用一个小堆来验证它是否有效。@assylias您可能会从图片中看到,按钮被禁用、变灰、未启用,无论您如何称呼它。你甚至不能点击它,所以我不知道它是如何工作的。哦,我明白了。当我尝试时它被启用-愚蠢的问题是:当您尝试进行堆转储时,您的程序仍在运行,对吗?您使用的是哪个版本的jdk?@assylas程序正在运行(图中是帧:D)。我使用的是Java7Update45。我认为这可以概括如下:您使用jre运行visualvm,而您本应该使用jdk(visualvm安装在同一个jdk中)。