2008-12-03 6 views
10

El archivo de registro de un bloqueo de JVM contiene todo tipo de información útil para la depuración, como las bibliotecas compartidas cargadas y el entorno completo. ¿Puedo forzar a la JVM a generar uno de estos programáticamente? ya sea mediante la ejecución de código que lo bloquea o de alguna otra manera? ¿O alternativamente acceder a la misma información de otra manera?¿Puedo forzar la generación de un archivo de registro de bloqueo de JVM?

Respuesta

8

Puede intentar lanzar un OutOfMemoryError y agregar el argumento -XX: + HeapDumpOnOutOfMemoryError jvm. Esto es nuevo a partir de 1.6 al igual que las otras herramientas sugeridas por McDowell. http://blogs.oracle.com/watt/resource/jvm-options-list.html

+1

Vea también http://stackoverflow.com/questions/5576672/force-or-generate-jvm-core-dump – jhclark

+2

El enlace está muerto (podría agradecer a Oracle). – willome

+0

Esa otra pregunta parece ser un volcado del núcleo que uno podría enviar al implementador de JVM, p. IBM, en lugar de un 'hs_err_pid * .log'. – PJTraill

0

Estoy bastante seguro de que esto se puede hacer con el IBM JDK ya que estaba jugando con su analizador de pila hace algún tiempo. Una opción para forzar el volcado sería simplemente causar una excepción OutOfMemoryException.

Estas herramientas pueden proporcionar algunas pistas http://www.ibm.com/developerworks/java/library/j-ibmtools1/

+0

El enlace parece tratarse de una herramienta disponible solo para clientes de IBM, de la que no soy uno. – DJClayworth

2

un vistazo a la JDK Development Tools, en particular, la Troubleshooting Tools para volcar el montón, información de configuración de impresión, etcétera.

+0

De las herramientas, ['jstack'] (http://docs.oracle.com/javase/6/docs/technotes/tools/share/jstack.html) parece ser la más prometedora, con el formato' jstack -l - F -m '(' -F' no es necesario si el proceso no se cuelga). Esto le proporciona pilas de todos los hilos, en modo mixto (Java y nativo) y sincronizadores bloqueados, incluso si el proceso se cuelga. – PJTraill

+0

O consulte https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/toc.html para Oracle Java 8 (los enlaces anteriores son 6, pero probablemente no sean de contenido muy diferente). – PJTraill

Cuestiones relacionadas