jps java jmap

jps java



Cómo analizar el volcado de pila utilizando jmap en java (6)

Estoy creando volcado de pila utilizando el comando siguiente:

jmap -dump:file=DumpFile.txt <process-id>

He abierto el archivo generado - DumpFile.txt pero no está en formato legible. Así que, por favor, hágame saber cómo analizar los datos en el archivo generado.


Debe usar jmap -heap:format=b <process-id> sin ninguna ruta. Por lo tanto, crea un archivo * .bin que puede abrir con jvisualvm.exe (la misma ruta que jmap). Es una gran herramienta para abrir tales archivos de volcado.


MAT, jprofiler, jhat son posibles opciones. Ya que jhat viene con jdk, puede iniciarlo fácilmente para hacer un análisis básico. mira esto


Muy tarde para contestar esto, pero vale la pena echarle un vistazo rápido. Solo se necesitan 2 minutos para entender en detalle.

Primero crea este programa java

import java.util.ArrayList; import java.util.List; public class GarbageCollectionAnalysisExample{ public static void main(String[] args) { List<String> l = new ArrayList<String>(); for (int i = 0; i < 100000000; i++) { l = new ArrayList<String>(); //Memory leak System.out.println(l); } System.out.println("Done"); } }

Use jps para encontrar el vmid (id de máquina virtual, es decir, id de JVM)

Vaya a CMD y escriba los siguientes comandos>

C:/>jps 18588 Jps 17252 GarbageCollectionAnalysisExample 16048 2084 Main

17252 es el vmid que necesitamos.

Ahora aprenderemos a usar jmap y jhat

Usar jmap - para generar volcado de pila

De documentos de java sobre jmap "jmap imprime mapas de memoria de objetos compartidos o datos de memoria de almacenamiento dinámico de un proceso determinado o archivo central o un servidor de depuración remoto"

Utilice el siguiente comando para generar volcado de pila>

C:/>jmap -dump:file=E:/heapDump.jmap 17252 Dumping heap to E:/heapDump.jmap ... Heap dump file created

Donde 17252 es el vmid (recogido desde arriba).

El volcado de pila se generará en E: / heapDump.jmap

Ahora use Jhat Jhat se usa para analizar el volcado de recolección de basura en java -

C:/>jhat E:/heapDump.jmap Reading from E:/heapDump.jmap... Dump file created Mon Nov 07 23:59:19 IST 2016 Snapshot read, resolving... Resolving 241865 objects... Chasing references, expect 48 dots................................................ Eliminating duplicate references................................................ Snapshot resolved. Started HTTP server on port 7000 Server is ready.

De forma predeterminada, iniciará el servidor http en el puerto 7000. Luego iremos a http://localhost:7000/

Cortesía: JMAP , cómo monitorear y analizar la recolección de basura de 10 maneras


Puedes usar jhat (Java Heap Analysis Tool) para leer el archivo generado:

jhat [ options ] <heap-dump-file>

El comando jhat analiza un archivo de volcado de pila java e inicia un servidor web. jhat le permite navegar en los volcados de pila con su navegador web favorito.

Tenga en cuenta que debe tener una salida de formato binario hprof para poder analizarla con jhat . Puede usar la opción format=b para generar el volcado en este formato.

-dump:format=b,file=<filename>


Si usa Eclipse como su IDE, le recomendaría el excelente analizador de memoria del complemento Eclipse.

Otra opción es usar JVisualVM, puede leer (y crear) volcados de pila también, y se envía con cada JDK. Lo puedes encontrar en el directorio bin de tu JDK.


VisualVm no viene con Apple JDK. Puede usar el paquete de aplicaciones Mac de VisualVM (dmg) como una aplicación separada, para compensar eso.