Dav*_*itt 5 java heap memory-leaks
当我从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=256M
Run Code Online (Sandbox Code Playgroud)
像这样调用MyEclipse:
"C:\Program Files\MyEclipse 6.0\eclipse\eclipse.exe" -vm "C:\Program Files\MyEclipse 6.0\jre\bin\javaw.exe" -vmargs -Xms1448M -Xmx1448M
Run Code Online (Sandbox Code Playgroud)
碰撞vm设置:
"C:\Program Files\MyEclipse 6.0\eclipse\eclipse.exe" -vm "C:\Program Files\MyEclipse 6.0\jre\bin\javaw.exe" -vmargs -Xms80M -Xmx1024M
Run Code Online (Sandbox Code Playgroud)
没有效果.所以我试图让它将堆转储到一个文件,但放置这些:
-XX:+HeapDumpOnCtrlBreak
-XX:+HeapDumpOnOutOfMemoryError
Run Code Online (Sandbox Code Playgroud)
在程序参数中没有任何效果.如何使用更多的内存使用情况分析?例如,jstack目前在Windows平台上不可用.使用SendSignal没有我能看到的效果.

ove*_*ink 11
有许多方法可以获得堆转储.以下是我使用过的一些内容:
-XX:+HeapDumpOnOutOfMemoryError 如果你打你的OOM,应该让你转储.如果您运行的是Java 6,则jmap应该适用于Windows.如果要转储堆并且没有命中OOM,这可能很有用.使用Windows任务管理器查找Java应用程序的pid,并在控制台中运行以下命令:
jmap -dump:format=b,file=c:\heap.bin <pid>
Run Code Online (Sandbox Code Playgroud)
除了VisualVM之外,Eclipse Memory Analyzer(也是免费的)可以帮助您分析在转储后占用所有空间的内容.
| 归档时间: |
|
| 查看次数: |
14969 次 |
| 最近记录: |