2009-12-10 10 views
12

Tenemos una aplicación de escritorio que usa JNI que ocasionalmente hace que la JVM se cuelgue. Afortunadamente, la JVM produce un archivo hs_err_pidXXXX.log, que es bastante útil para depurar dichos errores. Sin embargo, siempre parece ir al directorio de trabajo actual, y es molesto excavar desde allí, ya que nuestros otros archivos de registro van todos a un "lugar de archivo de registro" específico.¿Es posible especificar dónde van los volcados de bloqueo de JVM?

¿Es posible especificar una ubicación diferente para esos archivos "dump de bloqueo"? ¿Cómo?

Respuesta

12

Joonas,

Aunque el HeapDumpPath trabaja para el montón de volcado no es la respuesta para su pregunta. El volcado de pila y el registro de bloqueo de jvm son dos cosas separadas.

Para cambiar el destino del bloqueo de JVM registro de ejecución de Java con esta opción:

-XX:ErrorFile=/path/to/file. 

Path// archivo en el lugar que desea que el registro de bloqueo de JVM a la salida.

+0

cómo ejecutar Java con esta opción? No pude hacer eso a través de cmd –

+1

@MuhammedRefaat En la consola: 'java -XX: ErrorFile =/ruta/a/archivo.log -jar myapp.jar' – sja

+0

@sja muchas gracias –

9

De forma predeterminada, el volcado del montón se crea en un archivo llamado java_pidpid.hprof en el directorio de trabajo de la máquina virtual. Puede especificar un nombre de archivo o directorio alternativo con la opción -XX: HeapDumpPath =. Por ejemplo, -XX: HeapDumpPath =/disk2/dumps provocará que se genere el volcado de pila en el directorio /disk2/dumps.

+1

-1 La pregunta es sobre el registro de bloqueo, no sobre el volcado del montón como lo señala la respuesta aceptada. Esta sigue siendo una buena información, pero no una respuesta para esta pregunta. –

Cuestiones relacionadas