Diagnóstico de bloqueos

Es posible utilizar muchos enfoques a la hora de determinar la causa de un bloqueo. El proceso normalmente implica aislar el problema comprobando la configuración del sistema y probando diversas opciones de diagnóstico.

Comprobación del entorno del sistema

Es posible que el sistema estuviera en un estado que ha provocado el bloqueo de la JVM. Por ejemplo, podría ser la falta de un recurso (como por ejemplo memoria o disco) o un problema de estabilidad. Compruebe el archivo de volcado Java, que contiene diversa información del sistema (tal como se describe en Utilización de volcados Java en la J9 Referencia de VM). El archivo de volcado Java le indica cómo encontrar información sobre recursos de memoria y disco. Los registros del sistema pueden ofrecer indicaciones sobre problemas del sistema.

Recopilación de información sobre procesos

Resulta útil averiguar exactamente qué estaba sucediendo que ha provocado que se produjera el bloqueo.

Analice el archivo principal (tal como se describe en Visor de volcado en la documentación de usuario deOpenJ9) para generar un rastreo de pila, que mostrará lo que se estaba ejecutando hasta el punto del bloqueo. Puede ser lo siguiente:
  • Código JNI nativo.
  • Código compilado JIT o AOT. Si tiene un problema con el código JIT o AOT, intente ejecutar sin el código JIT o AOT utilizando la opción -Xint.
  • Código JVM.
Otros métodos de rastreo son los siguientes:
  • ltrace
  • strace

Información sobre el entorno Java

Utilice el volcado Java para determinar qué estaba haciendo cada hebra y qué métodos Java™ se estaban ejecutando. Relacione las direcciones de función con las direcciones de biblioteca para determinar el origen del código que se ejecuta en diversos puntos.

Utilice la opción -verbose:gc para ver el estado del almacenamiento dinámico de Java y determinar si:
  • Había una escasez de espacio de almacenamiento dinámico de Java y si esto podría haber causado el bloqueo.
  • El bloqueo se ha producido durante la recopilación de basura, lo que indica un posible error en la recopilación de basura. Consulte Datos de diagnóstico del recopilador de basura en la Referencia de máquina virtualJ9.
  • El bloqueo se ha producido después de la recopilación de basura, lo que indica posibles daños en la memoria.

Para obtener más información sobre la gestión de memoria, consulte Gestión de memoria en la publicación J9 VM reference.