Selektywne wyłączanie kompilatora JIT lub AOT
Jeśli błąd programu Java™ wskazuje na problem z kompilatorem JIT lub AOT, można spróbować zawęzić ten problem dalej.
O tym zadaniu
Domyślnie kompilator JIT optymalizuje metody na różnych poziomach optymalizacji. Różne opcje optymalizacji są stosowane do różnych metod, które są oparte na ich liczebności wywołań. Metody, które są wywoływane częściej, są optymalizowane na wyższych poziomach. Zmieniając parametry kompilatora JIT, można kontrolować poziom optymalizacji, przy którym metody są zoptymalizowane. Użytkownik może określić, czy optymalizator jest w błędzie, a jeśli jest, która optymalizacja jest problematyczna.
Kompilator AOT domyślnie kompiluje metody na poziomie optymalizacji warm
. Wymuszenie kompilowania przez kompilator AOT metody na wyższym poziomie jest możliwe, ale nie jest obsługiwane.
java -Xjit:verbose,optLevel=noOpt HelloWorld
uruchamia program HelloWorld , włącza szczegółowe dane wyjściowe z JIT i sprawia, że JIT generuje rodzimy kod bez wykonywania żadnych optymalizacji. Opcje optymalizacji są wymienione w opcji -Xjit. Kompilator AOT jest sterowany w podobny sposób, za pomocą opcji -Xaot . Opcji -Xjit należy używać podczas diagnozowania problemów z kompilatorem JIT, a także opcji -Xaot podczas diagnozowania problemów z kompilatorem AOT.Aby określić, która część kompilatora jest przyczyną niepowodzenia, wykonaj następujące kroki:
Procedura
Co dalej
Jeśli jedno z tych ustawień spowoduje zniknięcie Twojego błędu, istnieje obejście, którego można użyć. To obejście jest tymczasowe, gdy zespół usług Java analizuje i rozwiąże problem z kompilatorem. Jeśli usunięcie produktu disableInlining z listy parametrów JIT lub AOT nie spowoduje ponownego wyświetlenia, należy to zrobić, aby zwiększyć wydajność. Aby zwiększyć wydajność obejścia, należy postępować zgodnie z instrukcjami w sekcji Znajdowanie niesprawnej metody .
Jeśli błąd nadal występuje na poziomie optymalizacji noOpt
, należy wyłączyć kompilator JIT lub AOT jako obejście.