2009-06-04 35 views
34

Si un proceso falla y deja un volcado del núcleo o creo uno con gcore, ¿cómo puedo analizarlo?¿Cómo analizar la información de un volcado de núcleo de Java?

Me gustaría poder usar jmap, jstack, jstat etc. y también para ver los valores de todas las variables.

De esta manera puedo encontrar los motivos de una JVM bloqueada o congelada.

+0

¿Qué es un volcado de núcleo de Java? ¿Se está refiriendo al seguimiento de la pila de la aplicación o la colisión de la JVM provocó un volcado del núcleo? –

+1

¿Podríamos convertir esto en una wiki? Esta no es una pregunta de programación. Sin embargo, es muy relevante para cualquier programador de Java en la plataforma Unix. Mudarse a softwarerecs ... es otra opción. En cualquier caso, no elimine esto .. – Jayan

Respuesta

0

IBM proporciona una serie de herramientas que se pueden utilizar también en el sun jvm. Echar un vistazo a algunos de los proyectos en alphaWorks, que proporcionan un montón de hilo y analizadores de volteo

Karl

0

recomiendo que pruebe Netbeans Profiler .Tiene amplio conjunto de herramientas para el análisis en tiempo real. Las herramientas de IbM merecen la pena para el análisis fuera de línea

5

¿Estás seguro de que un volcado de núcleo es lo que quieres aquí? Eso contendrá las agallas primas de la JVM en ejecución, en lugar de la información del nivel de Java. Quizás un volcado de almacenamiento JVM es más de lo que necesita.

35

Está bien si ha creado el volcado del núcleo con gcore o gdb, entonces tendrá que convertirlo en algo llamado HPROF. Estos pueden ser utilizados por VisualVM, Netbeans o la herramienta Memory Analyzer de Eclipse (anteriormente SAP Memory Analyzer). Yo recomendaría Eclipse MAT.

Para convertir el archivo utilice la herramienta de línea de comandos jmap.

# jmap -dump:format=b,file=dump.hprof /usr/bin/java core.1234 

donde:

dump.hprof es el nombre del archivo hprof desea crear

/usr/bin/java es la ruta a la versión del binario de Java que generó el volcado del núcleo

core.1234 es su archivo básico normal.

+0

¿Podemos convertir un jdk 1.4 core dump file producido usando gcore a hprof en solaris usando jdk1.5/bin/jmap? Intenté usar el comando anterior pero me da el error: Error al adjuntar al archivo central: no puedo encontrar el marcador 'UseSharedSpaces' – techzen

+0

techzen: no estoy seguro de esto, me temo ... definitivamente estás haciendo referencia al ejecutable 1.4 java la línea de comando? Si es así, puede ser que los 1.4 volcados de núcleo no sean compatibles. – chillitom

+0

¿Es posible usar jmap para convertir un archivo mdmp generado por JVM cuando se bloquea (http://docs.oracle.com/cd/E15289_01/doc.40/e15059/crash.htm)? – Greenhand

2

En realidad, VisualVM puede procesar el volcado del núcleo de la aplicación.

Simplemente invoque "File/Add VM Coredump" y agregará una nueva aplicación en el explorador de aplicaciones. A continuación, puede realizar el volcado de hebras o el volcado de heap de esa JVM.

+0

Archivo añadir coredump vm es en gris para mí. No estoy seguro de por qué exactamente – visch

+0

Si está en Windows, no es compatible y desafortunadamente aparecerá en gris. Estoy en el mismo barco. http://visualvm.java.net/coredumps.html El nodo Core Dump está visible en la ventana de aplicaciones si VisualVM se está ejecutando en Solaris o Linux. –

6

Si está utilizando una JVM de IBM , download la IBM rosca y el monitor volcado Analizador. Es una excelente herramienta. Proporciona detalles de subprocesos y puede señalar interbloqueos, etc. El siguiente blog post proporciona una descripción general sobre cómo usarlo.

Cuestiones relacionadas