Inhabilitación del compilador JIT o AOT
Si sospecha que se está produciendo un problema en el compilador JIT o AOT, inhabilite la compilación para ver si el problema continúa. Si el problema sigue produciéndose, sabrá que el compilador no es su causa.
Acerca de esta tarea
El compilador JIT está habilitado de forma predeterminada. El compilador AOT también está habilitado de forma predeterminada, pero sólo está activo cuando están habilitadas las clases compartidas (para obtener más información sobre las clases compartidas, consulte Introducción a la compartición de datos de clase en la documentación de usuario de OpenJ9). Por razones de eficiencia, no se compilan todos los métodos de una aplicación Java™ . La JVM mantiene un recuento de llamadas para cada método de la aplicación; cada vez que se llama y se interpreta un método, el recuento de llamadas de dicho método se incrementa. Cuando el recuento alcanza el umbral de compilación, el método se compila y se ejecuta de forma nativa.
El mecanismo de recuento de llamadas extiende la compilación de métodos durante toda la vida de la aplicación, dando mayor prioridad a los métodos que se utilizan con más frecuencia. Algunos métodos utilizados con menos frecuencia podrían no compilarse nunca. Como resultado, cuando un programa Java falla, el problema puede estar en el compilador JIT o AOT o puede estar en otro lugar de la JVM.
El primer paso para diagnosticar la anomalía es determinar dónde está el problema. Para ello, primero debe ejecutar el programa Java en modo puramente interpretado (es decir, con los compiladores JIT y AOT inhabilitados).
Procedimiento
- Elimine las opciones -Xjit y -Xaot (y los parámetros que las acompañan) de la línea de mandatos.
- Utilice la opción de línea de mandatos -Xint para inhabilitar los compiladores JIT y AOT.Por motivos de rendimiento, no utilice la opción -Xint en un entorno de producción.
Qué hacer a continuación
La ejecución del programa Java con la compilación inhabilitada conduce a una de las situaciones siguientes:
- La anomalía continúa. El problema no estará en el compilador JIT o AOT. En algunos casos, el programa podría empezar a fallar de otra manera; sin embargo, el problema no estará relacionado con el compilador.
- La anomalía desaparece. Lo más probable es que el problema esté en el compilador JIT o AOT.Si no utiliza clases compartidas, el compilador JIT estará defectuoso. Si utiliza clases compartidas, deberá determinar qué compilador está defectuoso ejecutando su aplicación sólo con la compilación JIT habilitada. Ejecute la aplicación con la opción -Xnoaot en lugar de la opción -Xint. Esto le llevará a una de las siguientes situaciones:
- La anomalía continúa. El problema estará en el compilador JIT. También puede utilizar -Xnojit en lugar de la opción -Xnoaot para asegurarse de que sólo el compilador JIT presenta una anomalía.
- La anomalía desaparece. El problema estará en el compilador AOT.