JIT- oder AOT-Compiler gezielt inaktivieren
Wenn Ihr Java™ -Programmfehler auf ein Problem mit dem JIT-oder AOT-Compiler hinweist, können Sie versuchen, das Problem weiter einzugrenzen.
Informationen zu dieser Task
Standardmäßig optimiert der JIT-Compiler Methoden auf unterschiedlichen Optimierungsstufen. Auf verschiedene Methoden werden je nach der entsprechenden Aufrufanzahl verschiedene Optimierungsoptionen angewendet. Methoden, die häufiger aufgerufen werden, werden mit einer höheren Stufe optimiert. Indem Sie Parameter des JIT-Compilers ändern, können Sie die Optimierungsstufe der Methoden steuern. Sie können ermitteln, ob das Optimierungsprogramm fehlerhaft ist, und wenn ja, welche Optimierung problematisch ist.
Der AOT-Compiler kompiliert standardmäßig Methoden auf der Optimierungsstufe warm . Das Erzwingen des AOT-Compilers zum Kompilieren einer Methode auf einer höheren Ebene ist möglich, wird aber nicht unterstützt.
java -Xjit:verbose,optLevel=noOpt HelloWorldEs wird das Programm HelloWorld ausgeführt, die ausführliche Ausgabe vom JIT-Compiler aktiviert und
der native Code vom JIT-Compiler generiert, ohne dass Optimierungen ausgeführt
werden. Optimierungsoptionen werden in -Xjitaufgelistet. Der AOT-Compiler wird auf ähnliche Weise über die Option -Xaot gesteuert. Mit der Option -Xjit werden Probleme mit dem JIT-Compiler und mit der Option -Xaot Probleme mit dem AOT-Compiler diagnostiziert.So können Sie feststellen, wo im Compiler das Problem verursacht wird:
Vorgehensweise
Nächste Schritte
Wenn mithilfe einer dieser Einstellungen der Fehler behoben wird, verfügen Sie über eine Fehlerumgehung, die Sie verwenden können. Diese Problemumgehung ist temporär, während das Java-Service-Team das Compilerproblem analysiert und behebt. Wenn das Entfernen von disableInlining aus der JIT- oder AOT-Parameterliste nicht dazu führt, dass das Problem erneut auftritt, sollten Sie 'disableInlining' entfernen, um die Leistung zu erhöhen. Befolgen Sie die Anweisungen unter Fehlerhaftes Verfahren suchen , um die Leistung der Problemumgehung zu verbessern.
Tritt das Problem auch bei der Optimierungsstufe noOpt auf, müssen Sie den JIT- oder AOT-Compiler inaktivieren, um den Fehler zu umgehen.