Usando el parámetro HeapDumpOnOutOfMemoryError para el volcado de stack para JBoss

Me dijeron que puedo agregar el -XX:+HeapDumpOnOutOfMemoryError a mis opciones de inicio de JVM en mi script de inicio de JBoss para obtener un volcado de almacenamiento dynamic cuando obtenemos un error de -XX:+HeapDumpOnOutOfMemoryError de memoria en nuestra aplicación. Me preguntaba dónde se vierten estos datos? ¿Es solo para la consola o para algún archivo de registro? Si es solo para la consola, ¿qué ocurre si no estoy conectado al servidor Unix a través de la consola?

Esto es lo que la documentación de Oracle tiene que decir:

De forma predeterminada, el volcado de almacenamiento dynamic se crea en un archivo llamado java_ pid. Hprof en el directorio de trabajo de la máquina virtual, como en el ejemplo anterior. Puede especificar un nombre de archivo o directorio alternativo con la -XX:HeapDumpPath= . Por ejemplo, -XX:HeapDumpPath=/disk2/dumps provocará que el volcado de stack se genere en el /disk2/dumps .

Puede ver este volcado desde la consola UNIX.

La ruta para el volcado de stack se proporcionará como una variable justo después de donde haya colocado la variable mencionada.

P.ej:

 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${DOMAIN_HOME}/logs/mps" 

Puede ver el volcado de la consola en la ruta mencionada.

Me resultó difícil descifrar qué se entiende por “directorio de trabajo de la máquina virtual”. En mi ejemplo, estaba usando el progtwig Java Wrapper de servicios para ejecutar un jar: los archivos de volcado se crearon en el directorio donde había colocado el progtwig contenedora, por ejemplo, c: \ myapp \ bin. La razón por la que descubrí esto es porque los archivos pueden ser bastante grandes y llenaron el disco duro antes de que descubriera su ubicación.

Si no está utilizando la opción “-XX: HeapDumpPath”, en el caso de JBoss EAP / As de forma predeterminada, el archivo de volcado del almacenamiento dynamic se generará en el directorio “JBOSS_HOME / bin”.