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.