Herramientas y datos de diagnóstico

La máquina virtual (VM) J9 genera diversos tipos de información de diagnóstico para el análisis. Se puede utilizar una gama de herramientas para posteriormente la información y para ayudar para la determinación de problemas.

Parte de la información de diagnóstico está dirigida a áreas específicas del entorno de ejecución de Java™ . Por ejemplo, un volcado de almacenamiento dinámico proporciona información útil sobre las instancias de clase y de objetos en el almacenamiento dinámico Java, mientras que el rastreo J9 está dirigido hacia problemas de VM más generales.

Durante la determinación de problemas, uno de los primeros objetivos es identificar el área más probable en el que surge el problema. Muchos problemas que parecen ser un problema de Java se originan en otro lugar. Las áreas en las que surgen problemas son:
  • La máquina virtual Java (VM)
  • Código nativo
  • Aplicaciones Java
  • Un sistema operativo o un recurso del sistema
  • Un subsistema, como el código de la base de datos
  • Hardware del sistema

Puede que necesite diferentes herramientas y diferente información de diagnóstico para resolver los problemas de cada área. Las herramientas descritas aquí son las que se crean en la VM J9 o las que están disponibles para utilizarse con la VM J9. La mayoría de estas herramientas son entre plataformas. Muchas otras herramientas son suministradas por proveedores de software del sistema o de hardware, como los depuradores del sistema.

Resumen de información de diagnóstico

Una VM J9 en ejecución incluye mecanismos para producir diferentes tipos de datos de diagnóstico al producirse sucesos diferentes. En general, la producción de estos datos se produce en condiciones predeterminadas, pero se puede controlar iniciando la VM con opciones específicas (por ejemplo, -Xdump). Las versiones anteriores de la VM controlaban la producción de información de diagnóstico a través del uso de variables de entorno. Puede seguir utilizando estas variables de entorno pero no son el mecanismo preferido.

El formato de la información de diagnóstico producida es específico de la VM J9 y podría cambiar entre releases.

Se pueden producir los siguientes tipos de información de diagnóstico:
Archivo de volcado Java
El archivo de volcado Java a veces se conoce como Javacore, o volcado de hebras en algunas máquinas virtuales. Este archivo de volcado está en un formato legible producido de forma predeterminada cuando la VM termina inesperadamente debido a una señal del sistema operativo, una excepción OutOfMemoryError o cuando el usuario especifica una combinación de claves reservada. Por ejemplo, Ctrl-Break en Windows genera un archivo de volcado Java. También puede generar un archivo de volcado Java llamando a un método desde la API de volcado, por ejemplo com.ibm.jvm.Dump.JavaDump(), desde dentro de la aplicación. Un archivo de volcado Java resume el estado de la máquina virtual en el instante en que se ha producido la señal. Gran parte del contenido del archivo de volcado Java es específico de la máquina virtual J9 . Consulte Volcado de Java para obtener más detalles.
Archivo de volcado de almacenamiento dinámico
La VM puede generar un archivo de volcado de almacenamiento dinámico a petición del usuario, llamando a com.ibm.jvm.Dump.HeapDump() desde dentro de la aplicación o, de forma predeterminada, cuando la VM termina debido a una excepción OutOfMemoryError. Puede especificar un control más preciso de la temporización de la creación de un archivo de volcado de almacenamiento dinámico con la opción -Xdump:heap. Por ejemplo, puede solicitar un archivo de volcado de almacenamiento dinámico después de que se haya producido un determinado número de recopilaciones de basura completas. El formato de Heapdump predeterminado (archivos phd) no es legible y debe ser procesado utilizando herramientas disponibles como Memory Analyzer. Consulte Utilización de Heapdump para obtener más detalles.
Archivo de volcado del sistema
Los archivos de volcado del sistema son archivos específicos de la plataforma que contienen información sobre los procesos activos, las hebras y la memoria del sistema. Estos archivos también se conocen como volcados de núcleo en plataformas Linux® . Los archivos de volcado del sistema suelen ser grandes. De forma predeterminada, los archivos de volcado del sistema los produce la VM solo cuando la VM falla de manera inesperada debido a un error de protección general (GPF) o un error principal de la VM o del sistema. También puede solicitar un archivo de volcado del sistema utilizando la API de volcado. Por ejemplo, puede llamar al método com.ibm.jvm.Dump.SystemDump() desde la aplicación. Puede utilizar la opción -Xdump:system para generar archivos de volcado del sistema cuando se producen otros sucesos.
Archivo de volcado JIT
Cuando se produce un suceso anormal o de error de protección general (GPF), el compilador Just-In-Time (JIT) genera un pequeño archivo de volcado binario de datos de diagnóstico que pueden ayudar a resolver problemas. Para obtener más información sobre la ubicación de este archivo, consulte Ubicación de archivo.
Datos de recopilación de basura
Una VM iniciada con la opción -verbose:gc genera salida en formato XML que se puede utilizar para analizar problemas en el propio recopilador de basura o problemas en el diseño de aplicaciones de usuario. Otras opciones diversas afectan a la naturaleza y la cantidad de la información de diagnóstico del recopilador de basura producida. Para obtener más información, consulte Datos de diagnóstico del recopilador de basura.
Rastrear datos
El rastreo de J9 permite que se registren los puntos de ejecución en el código Java y el código interno de la máquina virtual. La opción -Xtrace permite controlar el número y las áreas de los puntos de rastreo, así como el tamaño y la naturaleza de los almacenamientos intermedios de rastreo mantenidos. Los almacenamientos intermedios de rastreo del momento de error también están disponibles en un archivo de volcado del sistema y hay herramientas disponibles para extraerlos del archivo. Normalmente, los datos de rastreo se escriben en un archivo en un formato codificado y, a continuación, un formateador de rastreo convierte los datos a un formato legible. Sin embargo, si se van a producir cantidades pequeñas de rastreo y el rendimiento no es un problema, el rastreo se puede direccionar a STDERR y se formateará previamente. Para obtener más información, consulte Rastreo de aplicaciones Java.
Otros datos
Hay disponibles opciones especiales para producir información de diagnóstico relacionada con los siguientes componentes de J9:

Resumen de las herramientas entre plataformas

Las siguientes herramientas entre plataformas se pueden utilizar para ayudar a diagnosticar problemas:
Herramientas de IBM® Monitoring and Diagnostic
IBM Monitoring and Diagnostic Tools son un conjunto de herramientas basadas en la GUI para supervisar aplicaciones y analizar datos de diagnóstico. Estas herramientas están diseñadas para hacer que las tareas de diagnóstico sean lo más rápidas y fáciles posible. Para obtener más información sobre las herramientas, consulte la documentación de IBM Monitoring and Diagnostic tools .
Visor de volcados entre plataformas
El visor de volcados entre sistemas, jdmpview, utiliza los archivos de volcados que el sistema operativo genera para resolver los datos que son relevantes en la máquina virtual J9. El visor de volcados conoce la VM y puede utilizarse para analizar sus funciones internas. Es una herramienta muy útil para depurar terminaciones inesperadas de la VM. Dado que el visor de volcado es para multi plataformas, se puede analizar un volcado desde cualquier sistema, sin tener conocimientos del depurador del sistema. Para obtener más información, consulte Visor de volcado.
Herramientas JVMTI
JVMTI (JVM Tool Interface) es una interfaz de programación para que la utilicen las herramientas, sustituyendo JVMPI (Java Virtual Machine Profiler Interface) y JVMDI (Java Virtual Machine Debug Interface). Para obtener información sobre JVMTI, consulte Java Virtual Machine Tool Interface.
Herramientas JPDA
JPDA (Java Platform Debugging Architecture) es un estándar común para depurar una máquina virtual Java. J9 es totalmente compatible con JPDA. Cualquier depurador JPDA puede estar conectado a la VM J9. Como se trata de depuradores, las herramientas JPDA son ideales para rastrear problemas de aplicación que presenten condiciones que se puedan repetir, como fugas de memoria en aplicaciones, o bloqueos. Un ejemplo de una herramienta JPDA es el depurador que se empaqueta con Eclipse para Java.
DTFJ
La infraestructura de herramientas de diagnóstico para Java (DTFJ) es una interfaz de programación de aplicaciones (API) Java que se utiliza para dar soporte a la creación de herramientas de diagnóstico Java. DTFJ puede examinar un archivo de volcado del sistema para analizar la estructura interna de la máquina virtual Java. DTFJ se implementa en código Java puro, y las herramientas escritas utilizando DTFJ pueden ser multiplataforma. Por lo tanto, es posible analizar un archivo de volcado tomado de una máquina en otra máquina remota y más apropiada. Por ejemplo, un archivo de volcado producido en una máquina z/OS® se puede analizar en un Thinkpad de Windows. Para obtener más información, consulte Utilización de la infraestructura de herramientas de diagnóstico para Java.
Formato de rastreo
El rastreo es una herramienta de diagnóstico clave. La VM J9 incorpora un alto grado de flexibilidad para determinar qué se rastrea y cuándo se rastrea. Esta flexibilidad permite personalizar el rastreo para que tenga un efecto relativamente pequeño en el rendimiento. La máquina virtual J9 también contiene muchos puntos de rastreo incorporados. En este release, el rastreo máximo está habilitado de forma predeterminada para unos pocos puntos de rastreo de nivel 1 y puntos de rastreo de excepción. Las opciones de la línea de mandatos permiten establecer exactamente lo que se va a rastrear y especificar adónde va a ir la salida de rastreo. Generalmente, la salida de rastreo está en un formato codificado y requiere un formateador de rastreo para visualizarse correctamente.
Además de los puntos de rastreo incorporados proporcionados en el código VM, puede colocar sus propios puntos de rastreo de aplicación en el código Java. Puede activar el rastreo para entrada y salida en todos los métodos de todas las clases. De forma alternativa, puede activar el rastreo para una selección de métodos en una selección de clases. Los rastreos de aplicaciones y métodos se intercalarán en los almacenamientos intermedios de rastreos con los puntos de rastreo incluidos en VM. El rastreo permite realizar un análisis detallado de las rutas realizadas por el código. El rastreo se utiliza principalmente para la determinación de problemas de fuga y rendimiento. Los datos de rastreo también pueden proporcionar claves para el estado de una VM antes de una terminación o bloqueo inesperado. El rastreo y el formateo de rastreo son específicos de la VM J9. Consulte Rastreo de aplicaciones Java para obtener más detalles. Si bien el rastreo no es fácil de comprender, resulta una herramienta eficaz.