2010-10-23 12 views
9

Sto riscontrando un problema nella mia applicazione Java in cui il JIT interrompe il codice. Se disattivo il JIT, tutto funziona correttamente, ma esegue 10-20 volte più lentamente.Disattivare JIT Java per un metodo/una classe specifici?

C'è un modo per disabilitare il JIT per un metodo o una classe specifici?

Edit: sto usando Ubuntu 10.10, ottenendo gli stessi risultati sia con:

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

e:

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

Hai un bug già? O hai trovato un bug esistente, che descrive il tuo problema? – soc

+0

Sembra molto improbabile che sia dovuto al JIT, no? Non potrebbe essere dovuto a una condizione di gara (dato che i tempi cambiano quando disabiliti jit) ... – aioobe

+0

Sto usando solo un singolo thread. Sono occupato a esaminare il bug, ma in realtà non ho il tempo adesso. L'errore si verifica in modo coerente dopo che un metodo specifico è stato compilato dal JIT. Per ora sto solo impostando l'opzione -XX: CompileThreshold abbastanza alta. – Ralf

risposta

6

la seguente opzione funziona sulle JVM, di escludere un metodo specifico:

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

Sun/Oracle Java 6 e da quella superiore usare l'opzione '-XX: CompileCommand'. Vedi [Opzioni 'java' per maggiori informazioni] (https://docs.oracle.com/javase/8/docs/technotes/tools/windows/java.html), in particolare per la v8. –

+1

Mi dispiace scovare un post così vecchio; se dovessi usare questo con una classe interna denominata, lo delimiterò come "com/domain/package/Outer/Inner" o "com/domain/package/Outer $ Inner"? – hexafraction

6

Sì, ce n'è uno. È possibile fornire alle classi in questione che si desidera escludere compilazione JIT allo start-up:

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

Ottengo "Opzione non riconosciuta: -Xjit: exclude = {...} Impossibile creare la Java virtual machine." – Ralf

+0

Mhhh ... decisamente strano. – soc

+2

-X le opzioni non sono standard. Possono cambiare da una versione all'altra e dipendono dalla tua JVM –

Problemi correlati