Java 如何在Eclipse中保存堆(转储到文件)?
当我从MyEclipse运行或调试GA/AI时,出现以下错误: 线程“main”java.lang.OutOfMemoryError中出现异常:java堆空间 eclipse.ini如下所示:Java 如何在Eclipse中保存堆(转储到文件)?,java,memory-leaks,heap,Java,Memory Leaks,Heap,当我从MyEclipse运行或调试GA/AI时,出现以下错误: 线程“main”java.lang.OutOfMemoryError中出现异常:java堆空间 eclipse.ini如下所示: -showsplash com.genuitec.myeclipse.product --launcher.XXMaxPermSize 256m -vmargs -Xms128m -Xmx512m -Duser.language=en -XX:PermSize=128M -XX:MaxPermSize
-showsplash com.genuitec.myeclipse.product
--launcher.XXMaxPermSize 256m
-vmargs
-Xms128m
-Xmx512m
-Duser.language=en
-XX:PermSize=128M
-XX:MaxPermSize=256M
"C:\Program Files\MyEclipse 6.0\eclipse\eclipse.exe" -vm "C:\Program Files\MyEclipse 6.0\jre\bin\javaw.exe" -vmargs -Xms1448M -Xmx1448M
MyEclipse的名称如下:
-showsplash com.genuitec.myeclipse.product
--launcher.XXMaxPermSize 256m
-vmargs
-Xms128m
-Xmx512m
-Duser.language=en
-XX:PermSize=128M
-XX:MaxPermSize=256M
"C:\Program Files\MyEclipse 6.0\eclipse\eclipse.exe" -vm "C:\Program Files\MyEclipse 6.0\jre\bin\javaw.exe" -vmargs -Xms1448M -Xmx1448M
将vm设置从以下位置提升:
"C:\Program Files\MyEclipse 6.0\eclipse\eclipse.exe" -vm "C:\Program Files\MyEclipse 6.0\jre\bin\javaw.exe" -vmargs -Xms80M -Xmx1024M
没有任何效果。因此,我试图让它将堆转储到一个文件中,但放置以下内容:
-XX:+HeapDumpOnCtrlBreak
-XX:+HeapDumpOnOutOfMemoryError
在程序中,参数没有任何作用。我如何通过更多的内存使用分析获得一些东西?例如,jstack目前在Windows平台上不可用。使用SendSignal没有我所看到的效果
您可以使用JConsole监控内存使用情况
也会有所帮助。有许多方法可以获取堆转储。以下是我使用过的一些:
-XX:+HeapDumpOnOutOfMemoryError
如果你点击了OOM,应该会被转储jmap -dump:format=b,file=c:\heap.bin <pid>
jmap-dump:format=b,file=c:\heap.bin
除了VisualVM之外,(也是免费的)还可以帮助您分析转储后占用所有空间的内容。
-XX:+heapdumponAutofmemoryError
应该放在“虚拟机参数”中,而不是“程序参数”
”在运行主函数时也可以尝试增加XXMaxPermSize,在VisualVM中创建的应用程序没有转储功能:您不能堆转储、线程转储、没有堆选项卡等。如果-XX:+HeapDumpOnOutOfMemoryError起作用,它在我的系统上会是什么样子?jps输出pid进程以及您的jmap语法在使用Java 7的Windows 7中发挥了巨大的作用。非常感谢。使用Java VisualVM,我创建了一个堆转储,但如何将其保存到文件中?