Preguntas frecuentes sobre el compilador JIT
Respuestas sobre temas como la inhabilitación del compilador JIT, el uso de compiladores JIT alternativos, el control de compilaciones JIT y el control dinámico del compilador JIT.
- ¿Se puede inhabilitar el compilador JIT?
- Sí. El compilador JIT está activado de forma predeterminada, pero puede desactivarlo con el parámetro de línea de mandatos apropiado. Para obtener más información, consulte Inhabilitación del compilador JIT o AOT.
- ¿Es posible utilizar el compilador JIT de otro proveedor?
- Núm.
- ¿Es posible utilizar cualquier versión del compilador JIT con la JVM?
- Núm. Los dos están estrechamente acoplados. Debe utilizar la versión del compilador JIT que se incluye con el paquete de JVM que utilice.
- ¿Puede descompilar métodos el compilador JIT?
- Normalmente, el compilador JIT no descompila métodos. Sin embargo, en ejemplos raros, el compilador JIT está forzado a descompilar un método. Tales ejemplos surgen cuando el compilador JIT aplica optimizaciones especulativas basadas en suposiciones en tiempo de compilación, las suposiciones se violan más tarde, y el compilador JIT no puede volver a compilar el método. Debido a las restricciones de implementación, tales métodos siguen interpretados hasta el final de la aplicación.
- ¿Es posible controlar dinámicamente el compilador JIT?
- Núm. Puede pasar opciones al compilador JIT para modificar el comportamiento, pero solo durante el arranque de la JVM, porque el compilador JIT se inicia al mismo tiempo que la JVM. Sin embargo, un programa Java™ puede utilizar la API java.lang.Compiler para habilitar e inhabilitar el compilador JIT en tiempo de ejecución.
- ¿Cuánta memoria gasta la memoria caché de código?
- El compilador JIT utiliza la memoria de forma inteligente. Cuando se inicializa la memoria caché de código, utiliza
relativamente poca memoria. A medida que se compilan más métodos en el código nativo, la memoria caché de código crece dinámicamente para satisfacer las necesidades del programa. Se recupera y se vuelve a utilizar el espacio ocupado anteriormente por métodos descartados o recompilados. Cuando el tamaño de la memoria caché de código alcanza un límite máximo predefinido, deja de aumentar. El compilador JIT parará entonces de compilar métodos para impedir que se agote la memoria del sistema y que ello tenga un impacto sobre la estabilidad de la aplicación o del sistema operativo.
Desde z/OS® V2R3, la modalidad de residencia para aplicaciones de 64 bits (RMODE64) está habilitada de forma predeterminada. Esta característica permite a JIT asignar memorias caché de código
por encima de la barra de memoria de 2 GB. Puede inhabilitar este comportamiento JIT especificando la subopción -Xjit:disableRMODE64 en la línea de mandatos.