2016-08-12 3 views
1

Ich habe mich gefragt, was dieser Parameter tut -XX: + UseInterpreter, habe ich einige der Forschung über das Internet und fand ich, dassWas macht dieser Parameter "-XX: + UseInterpreter"?

Verwenden Interpreter für nicht-kompilierten Methoden nur

I verstehe nicht, was dieser Parameter wirklich macht, kann mir jemand erklären?

Antwort

3

-XX:+UseInterpreter ist standardmäßig aktiviert, diese Option führt also nichts aus.

Wenn Sie es durch -XX:-UseInterpreter ausschalten, wird es jedes Mal, wenn eine neue Methode aufgerufen wird, zu einer Kompilierungswarteschlange hinzugefügt. Diese Option ist fast nutzlos. Jedoch dient es als ein Teil der -Xcomp Flag, das für

-XX:-UseInterpreter 
-XX:-BackgroundCompilation 
-XX:-ClipInlining 
-XX:Tier3InvokeNotifyFreqLog=0 
-XX:Tier4InvocationThreshold=0 

In diesem Fall werden nicht ausgeführt JVM Java-Methoden in Interpreter im Grunde eine Verknüpfung ist, das heißt Methoden gewaltsam vor Gebrauch JIT-kompiliert werden.

+0

Können Sie das mit einem Beispiel erklären? Ich verstehe immer noch nicht – Emax

+2

@Emax JVM kann Java-Code in 3 Modi ausführen: 1) '-Xint' - der Bytecode wird interpretiert; 2) '-Xcomp' - Java-Methoden werden bei der ersten Ausführung zum Maschinencode kompiliert; 3) gemischt (der Standard) - Methoden starten die Ausführung im Interpreter und später werden Hot-Methoden kompiliert. Die Option -XX: -UseInterpreter erzwingt die Kompilierung aller Java-Methoden bei der ersten Ausführung. – apangin