Además de la ya conocida jmap, (creo que estaba disponible a partir de la jdk 1.5), le he echado un vistazo a una herramienta bastante interesante llamada jhat (Java Heap Analysis Tool). Básicamente es una herramienta de análisis de un dump del heap en un momento dado. Lo que hace es levantar un servidor web al que te puedes conectar y visualizar mediante una serie de páginas información sobre qué objetos había en el heap en ese momento, cuanto ocupaban, que objetos referencian, …, etc.
Para analizar el heap, deberemos primero obtener un dump. Un vistazo a man jhat, nos muestra varios modos de obtenerlo:
- Use jmap -dump option to obtain a heap dump at runtime;
- Use jconsole option to obtain a heap dump via HotSpotDiagnosticMXBean
- Heap dump will be generated when OutOfMemoryError is thrown by specifying -XX:+HeapDumpOnOutOfMemoryError VM option;
- Use hprof @ http://java.sun.com/developer/technicalArticles/Programming/HPROF.html.
Ahora levantamos el server con:
jhat -J-Xmx326m /tmp/java_app-heap.bin
Et voilá. Ya tenemos levantado el servidor (por defecto en el puerto 7000). Recomiendo echarle un vistazo, es bastante útil.
Y esto es todo. Lo bueno, si breve…
0 comentarios