【发布时间】:2013-12-14 12:29:39
【问题描述】:
我有一个 Java 应用程序,我想使用 Java VisualVM (jvisualvm) 对其进行监控。
但是,在 VisualVM 窗口中可以看到的数据非常少。另外,我不能进行堆转储。
这是它的截图,以及我编写的另一个测试应用程序:
我可以监控内存使用情况、加载的类和线程。堆转储、执行 GC 以及采样被禁用。
我已尝试将-Dcom.sun.management.jxmremote 添加到VM 参数,如here 所述。这显示在“安装详细信息”窗口中。但是,它不会出现在 Java 进程参数中。 (应该吗?)
我还尝试单击测试应用程序中的按钮,直到出现OutOfMemoryError。没有堆转储;这并不奇怪,因为 OOME 上的堆转储已禁用。
我能做些什么来解决这个问题?
【问题讨论】:
-
您可以在可视虚拟机中进行堆转储。
-
我的意思是堆转储按钮有效。但是请注意,对于大型堆(例如 > 500MB/1GB),这将需要一些时间。你可以用一小堆试一下,以确认它有效。
-
@assylias 正如您可能从图片中看到的那样,按钮被禁用、变灰、未启用,无论您想怎么称呼它。你甚至不能点击它,所以我不明白它是如何工作的。
-
哦,我明白了。当我尝试时它已启用 - 愚蠢的问题但是:当您尝试进行堆转储时,您的程序仍在运行,对吗?你用的是什么版本的jdk?
-
@assylias 程序正在运行(图中有框架:D)。我正在使用 Java 7 更新 45。
标签: java eclipse jvisualvm heap-dump