outofmemoryerror exceeded error java out-of-memory

exceeded - java.lang.outofmemoryerror: java heap space linux



¿Cómo puedo ver qué hay en mi montón en Java? (8)

Logré obtener un "escape" de memoria en una aplicación Java que estoy desarrollando. Al ejecutar mi conjunto de pruebas JUnit, obtengo al azar excepciones de memoria (java.lang.OutOfMemoryError).

¿Qué herramientas puedo utilizar para examinar el montón de mi aplicación java para ver qué está usando todo mi montón para poder averiguar qué es lo que mantiene las referencias a los objetos que deberían poder recogerse como basura?



Si está utilizando un sistema que admite GTK, podría intentar usar JMP .



VisualVM está incluido en las versiones más recientes de Java. Puede usar esto para crear un volcado de pila y observar los objetos en él.

Alternativamente, también puede crear un comando de heapdump usando jmap (en su directorio jdk / bin):

jmap -dump:format=b,file=heap.bin <pid>

Incluso puede usar esto para obtener un histograma rápido de todos los objetos

jmap -histo <pid>

Puedo recomendar Eclipse Memory Analyzer ( http://eclipse.org/mat ) para un análisis avanzado de volcados de almacenamiento dinámico. Le permite descubrir exactamente por qué un determinado objeto o conjunto de objetos está vivo. Aquí hay una entrada de blog que le muestra lo que Memory Analyzer puede hacer: http://dev.eclipse.org/blogs/memoryanalyzer/2008/05/27/automated-heap-dump-analysis-finding-memory-leaks-with-one- hacer clic/


Puede probar el Detector de fugas de memoria que forma parte del conjunto de herramientas de control de misión de JRockit. Le permite inspeccionar el montón mientras se ejecuta la JVM. No necesita tomar instantáneas todo el tiempo. Puede conectarse en línea a la JVM y luego ver cómo cambia el montón entre colecciones de basura. También puede inspeccionar objetos, seguir referencias gráficamente y obtener rastros de pila desde donde su aplicación está asignando objetos actualmente. Aquí hay una breve introducción .

La herramienta es gratuita para el desarrollo y puedes descargarla aquí .


Usa el analizador de memoria Eclipse

No hay otra herramienta que conozca acerca de ninguna herramienta que se acerque a su funcionalidad, rendimiento y precio (fuente gratuita y de código abierto) al analizar volcados de almacenamiento dinámico.


Esta es una pregunta muy vieja. Mucha gente podría haber comenzado a usar IntelliJ desde que fue respondida originalmente. IntelliJ tiene un complemento que puede mostrar el uso de memoria llamada JVM Debugger Memory View .


Si necesitas algo gratis, prueba VisualVM

De la descripción del proyecto:

VisualVM es una herramienta visual que integra herramientas JDK de línea de comandos y capacidades de generación de perfiles livianas. Diseñado tanto para el desarrollo como para el uso del tiempo de producción.