Java Virtual Machine - Kompilierungsstufen
JVM unterstützt fünf Kompilierungsstufen -
- Interpreter
- C1 mit vollständiger Optimierung (keine Profilerstellung)
- C1 mit Aufruf- und Hinterkantenzählern (Light Profiling)
- C1 mit vollständiger Profilerstellung
- C2 (verwendet Profildaten aus den vorherigen Schritten)
Verwenden Sie -Xint, wenn Sie alle JIT-Compiler deaktivieren und nur den Interpreter verwenden möchten.
Client vs. Server JIT
Verwenden Sie -client und -server, um die jeweiligen Modi zu aktivieren.
Der Client-Compiler (C1) beginnt früher mit dem Kompilieren von Code als der Server-Compiler (C2). Zu dem Zeitpunkt, an dem C2 mit der Kompilierung begonnen hat, hätte C1 bereits Codeabschnitte kompiliert.
Aber während es wartet, profiliert C2 den Code, um mehr darüber zu wissen als der C1. Daher kann die Wartezeit, wenn sie durch die Optimierungen versetzt wird, verwendet werden, um eine viel schnellere Binärdatei zu generieren. Aus der Sicht eines Benutzers liegt der Kompromiss zwischen der Startzeit des Programms und der Zeit, die das Programm zur Ausführung benötigt. Wenn die Startzeit die Prämie ist, sollte C1 verwendet werden. Wenn erwartet wird, dass die Anwendung längere Zeit ausgeführt wird (typisch für Anwendungen, die auf Servern bereitgestellt werden), ist es besser, C2 zu verwenden, da dadurch viel schnellerer Code generiert wird, der jede zusätzliche Startzeit erheblich kompensiert.
Für Programme wie IDEs (NetBeans, Eclipse) und andere GUI-Programme ist die Startzeit entscheidend. Der Start von NetBeans kann eine Minute oder länger dauern. Hunderte von Klassen werden kompiliert, wenn Programme wie NetBeans gestartet werden. In solchen Fällen ist der C1-Compiler die beste Wahl.
Beachten Sie, dass es zwei Versionen von C1 gibt - 32b and 64b. C2 kommt nur rein64b.
Tiered Compilation
In älteren Java-Versionen hätte der Benutzer möglicherweise eine der folgenden Optionen auswählen können:
- Dolmetscher (-Xint)
- C1 (-Kunde)
- C2 (-Server)
Es kam in Java 7. Es verwendet den C1-Compiler zum Starten und wechselt, wenn der Code heißer wird, zum C2. Es kann mit den folgenden JVM-Optionen aktiviert werden: -XX: + TieredCompilation. Der Standardwert istset to false in Java 7, and to true in Java 8.
Von den fünf Kompilierungsstufen wird die gestufte Kompilierung verwendet 1 -> 4 -> 5.