Java VisualVM 在 OOME 时启用堆转储

7
根据文档,当应用程序遇到OutOfMemoryException时,可以自动进行堆转储。
在OutOfMemoryException处理后,进程会从左侧菜单中消失。
VisualVM如何使用此功能?

谢谢。


C:\work\temp>java -XX:HeapDumpPath=c:/work/temp/file.hprof -XX:+HeapDumpOnOutOfMemoryError -jar example.jar


程序退出后,您可以分析堆转储。 - Peter Lawrey
我在哪里可以找到它(堆转储)?手动生成后,它出现在左侧菜单中的进程下。启用“自动转储”复选框后没有任何反应。 - Mike
1
通常情况下,它是应用程序的工作目录。 - Peter Lawrey
2个回答

23

3

似乎应用程序在内存不足时就退出了。在这种情况下,您必须使用特殊的-XX参数运行您的应用程序。请参见JVM文档中的“dump”参数。(链接)应用程序死亡后,您可以在工具中检查转储文件。


使用相同的方法,当抛出java.lang.OutOfMemoryError时,我可以将堆转储到文件中。只是想知道“可视化工具”是什么? - Mike
我猜VisualVM无法应对即将退出的应用程序。 - Victor Sorokin
对我来说,工具质量较低。我希望逻辑上它能在同一位置显示快照,而不管进程是否存活。 - Mike
3
文档中有错误。提供了“-XX:-HeapDumpOnOutOfMemoryError”,但它只能与“-XX:+HeapDumpOnOutOfMemoryError”一起使用。 - Mike
我发现在进程退出时从进程列表中删除应用节点非常无用。在发生OOM时,您可以使用Eclipse Memory Analyzer Tool分析堆转储文件。 - Askar Kalykov

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