2010-10-23 9 views
9

Tengo un problema en mi aplicación Java donde el JIT rompe el código. Si deshabilito el JIT, todo funciona bien, pero se ejecuta 10-20 veces más lento.¿Deshabilitar Java JIT para un método/clase específico?

¿Hay alguna manera de desactivar el JIT para un método o clase específico?

Editar: estoy usando Ubuntu 10.10, obteniendo los mismos resultados tanto con:

OpenJDK Runtime Environment (IcedTea6 1.9) (6b20-1.9-0ubuntu1) 
OpenJDK 64-Bit Server VM (build 17.0-b16, mixed mode) 

y:

Java(TM) SE Runtime Environment (build 1.6.0_16-b01) 
Java HotSpot(TM) 64-Bit Server VM (build 14.2-b01, mixed mode) 
+0

Quizás quiso, abra una incidencia ¿ya? ¿O encontró un error existente que describe su problema? – soc

+0

Parece muy poco probable que se deba al JIT, ¿no? ¿No podría deberse a una condición de carrera (ya que el momento cambia cuando se desactiva el jit) ... – aioobe

+0

Solo estoy usando un hilo. Estoy ocupado investigando el error, pero realmente no tengo tiempo ahora. El error se produce de forma consistente después de que el JIT haya compilado un método específico. Por ahora solo estoy configurando la opción -XX: CompileThreshold lo suficientemente alta. – Ralf

Respuesta

6

La siguiente opción funciona en mis JVM, para excluir un método específico:

-X:CompileCommand=exclude,the/package/and/Class,methodName 
+1

Sun/Oracle Java 6 y superior usan la opción '-XX: CompileCommand'. Ver ['java' opciones para más información] (https://docs.oracle.com/javase/8/docs/technotes/tools/windows/java.html), específicamente para v8. –

+1

Perdón por desenterrar una publicación tan antigua; si tuviera que usar esto con una clase interna con nombre, ¿lo delimitaría como 'com/domain/package/Outer/Inner' o' com/domain/package/Outer $ Inner'? – hexafraction

6

Sí, lo hay. Puede suministrar las clases afectadas que desea excluir la compilación JIT en el arranque:

-Xjit:exclude={package/class.method|package/class.method} 
+1

Obtengo la opción "No reconocida: -Xjit: exclude = {...} No se pudo crear la máquina virtual Java." – Ralf

+0

Mhhh ... definitivamente raro. – soc

+2

-X las opciones no son estándar. Pueden cambiar entre versiones y dependen de su JVM –

Cuestiones relacionadas