AOT-Compiler
Die AOT-Kompilierung (AOT = Ahead-Of-Time) ermöglicht die Kompilierung von Java™ -Klassen in nativen Code für nachfolgende Ausführungen desselben Programms. Der AOT-Compiler arbeitet mit dem Framework zur gemeinsamen Nutzung von Klassendaten.
Der AOT-Compiler erstellt nativen Code dynamisch während der Ausführung einer Anwendung und stellt generierten AOT-Code in den Cache für gemeinsame Daten. Nachfolgende JVMs, die die Methode ausführen, können den AOT-Code aus dem Cache für gemeinsame Daten laden und verwenden, ohne einen Leistungsabfall zu verursachen, wie er in Verbindung mit mit JIT kompiliertem nativem Code auftritt.
Der AOT-Compiler ist standardmäßig aktiviert, ist aber nur aktiv, wenn gemeinsam genutzte Klassen aktiviert sind. Standardmäßig sind gemeinsam genutzte Klassen inaktiviert, d. h., es wird keine AOT-Aktivität stattfinden. Wenn der AOT-Compiler aktiv ist, wählt der Compiler die Methoden, die mit AOT kompiliert werden sollen, mit dem primären Ziel aus, die Startzeit zu verbessern.
In einer JVM ohne AOT-Compiler oder mit inaktiviertem AOT-Compiler kompiliert der JIT-Compiler gezielt häufig verwendete Methoden in optimierten nativen Code. Mit der Kompilierung von Methoden ist eine Zeiteinbuße verbunden, da der JIT-Compiler arbeitet, während die Anwendung aktiv ist. Da Methoden zunächst interpretiert werden und die meisten JIT-Kompilierungen während des Starts stattfinden, können sich die Startzeiten verlängern.
Das Leistungsverhalten beim Start lässt sich durch Verwendung des gemeinsam genutzten AOT-Codes zur Bereitstellung nativen Codes ohne Kompilierung verbessern. Es gibt eine geringfügige zeitliche Einbuße durch das Laden des AOT-Codes für eine Methode aus dem Cache für gemeinsame Daten und das Binden des Codes an das aktive Programm. Jedoch ist dieser zeitliche Mehraufwand vernachlässigbar im Vergleich zu der Zeit, die der JIT-Compiler zum Kompilieren dieser Methode benötigen würde.
Die Option -Xshareclasses kann verwendet werden, um gemeinsam genutzte Klassen zu aktivieren, wodurch möglicherweise auch der AOT-Compiler aktiviert wird, sofern AOT aktiviert ist.