2012-03-23 14 views

Respuesta

15

Hay dos casos diferentes.

Caída de la aplicación: ¿Era eso un OOM? NPE? ¿Cuál fue la excepción? Si hubo una falla de jvm, verá hs_err_.log (http://java.sun.com/j2se/1.5/pdf/jdk50_ts_guide.pdf)

Mirando el archivo que puede ver si su propia JNI causó un fallo o error de JVM.

Caída de la aplicación: Comenzaría con visualvm o jstat (ambos son parte de JDK). Se puede ver el estado actual de las discusiones y comprobar si hay algún error de aplicación ..

Otras herramientas de Linux que podrían ayudar a ver el interior de proceso:

  • lsof: se puede comprobar si el proceso abierto demasiado muchos archivos
  • strace: vea la actividad actual desde el punto de vista de la llamada del sistema.

Oracle tools documentation proporciona un buen listado ordenado. También enlaza Operating System Specific tools

+0

@ Bubby4j: ¿Pudiste averiguar el motivo del accidente? ¿Eso tenía algo que ver con el os? Voy a evaluar centos para desplegar nuestra herramienta, una basada en Java. – Jayan

+0

Fue un problema con openvz. –

13

Para empezar, sugeriría JVisualVM. Viene con el JDK, por lo que solo debe escribir jvisualvm en la línea de comando para iniciarlo.

Una vez que se inicia, puede conectarse a una JVM en ejecución, por lo que debería poder conectarse a su proceso Java suspendido e inspeccionar el volcado de pila para todos sus subprocesos en ejecución y el contenido del montón.


Otras herramientas integradas útiles incluyen:

jps identificadores de proceso listas de funcionamiento de los procesos Java

jstack imprime un volcado de pila para cada hilo en el proceso JVM especificada

jmap genera una volcado de pila para el proceso de JVM especificado (jvisualvm también puede generar volcados de pila)

jhat analiza los volcados del montón generados con jmap o jvisualvm


Por supuesto, también hay perfiladores más sofisticados disponibles. JProfiler es muy apreciado.

2

En estos casos (colgar, congelar, ...) tiene que analizar un volcado de almacenamiento dinámico para tratar de descubrir qué está sucediendo en su aplicación, puede usar JVisualVM para realizar el volcado, o puede agregue el parámetro de JVM apropiado para volcar el contenido del montón en el caso de un bloqueo.

Cuestiones relacionadas