¿Cómo guardo el montón (volcado en un archivo) en Eclipse?
-
10-07-2019 - |
Pregunta
Recibo este error cuando ejecuto o depuro mi GA / AI desde MyEclipse:
Excepción en hilo " main " java.lang.OutOfMemoryError: espacio de almacenamiento dinámico de Java
eclipse.ini tiene este aspecto:
-showsplash com.genuitec.myeclipse.product
--launcher.XXMaxPermSize 256m
-vmargs
-Xms128m
-Xmx512m
-Duser.language=en
-XX:PermSize=128M
-XX:MaxPermSize=256M
MyEclipse se llama así:
"C:\Program Files\MyEclipse 6.0\eclipse\eclipse.exe" -vm "C:\Program Files\MyEclipse 6.0\jre\bin\javaw.exe" -vmargs -Xms1448M -Xmx1448M
aumentando la configuración de vm desde esto:
"C:\Program Files\MyEclipse 6.0\eclipse\eclipse.exe" -vm "C:\Program Files\MyEclipse 6.0\jre\bin\javaw.exe" -vmargs -Xms80M -Xmx1024M
no ha tenido efecto. Así que estoy tratando de hacer que descargue el montón en un archivo, pero colocando estos:
-XX:+HeapDumpOnCtrlBreak
-XX:+HeapDumpOnOutOfMemoryError
en los argumentos del Programa no ha tenido efecto. ¿Cómo hago para que algo funcione con más análisis de uso de memoria? jstack, por ejemplo, actualmente no está disponible en plataformas Windows. Y usar SendSignal no tiene ningún efecto que pueda ver.
Solución
Hay varias formas de obtener volcados de almacenamiento dinámico. Aquí hay algunos que he usado:
-
-XX: + HeapDumpOnOutOfMemoryError
debería hacerte volcar si golpeas tu OOM. - Conéctese con VisualVM (gratis) y use su GUI para forzar un volcado del montón
- Use uno de los muchos buenos perfiladores comerciales (JProfiler, YourKit, ...)
- Use jmap (ver abajo) para forzar un volcado de un proceso en ejecución
Si está ejecutando Java 6, jmap debería funcionar en Windows. Esto puede ser útil si desea volcar el montón y no ha alcanzado su OOM. Use el Administrador de tareas de Windows para encontrar el pid de su aplicación Java, y en una consola ejecute esto:
jmap -dump:format=b,file=c:\heap.bin <pid>
Además de VisualVM, el Eclipse Memory Analyzer (también gratuito) puede ayudarlo a analizar lo que está comiendo arriba todo el espacio una vez que tenga el volcado.
Otros consejos
-XX: + HeapDumpOnOutOfMemoryError
debe colocarse en " Argumentos de VM
" no " Argumentos del programa
"
Puede monitorear los usos de la memoria con JConsole.
El jstat también ayudará .