Często zadawane pytania dotyczące kompilatora JIT

Odpowiedzi na tematy takie jak wyłączenie kompilatora JIT, wykorzystanie alternatywnych kompilatorów JIT, sterowanie kompilacją JIT oraz dynamiczne sterowanie kompilatorem JIT.

Czy mogę wyłączyć kompilator JIT?
Tak. Kompilator JIT jest domyślnie włączony, ale można go wyłączyć za pomocą odpowiedniego parametru wiersza komend. Więcej informacji na ten temat zawiera sekcja Wyłączanie kompilatora JIT lub AOT.
Czy mogę użyć kompilatora JIT innego dostawcy?
Nie.
Czy mogę używać dowolnej wersji kompilatora JIT z maszyną JVM?
Nie. Te dwa są ściśle sprzężone. Należy użyć wersji kompilatora JIT, która jest dostarczana z pakietem maszyny JVM, który jest używany.
Czy kompilator JIT może dekompilować metody?
Zwykle kompilator JIT nie dekompiluj metod. Jednak w rzadkich przypadkach kompilator JIT jest zmuszony do dekompilowania metody. Takie instancje pojawiają się, gdy kompilator JIT stosuje optymalizacje spekulacyjne oparte na założeniach czasu kompilacji, założenia są później naruszane, a kompilator JIT nie jest w stanie ponownie skompilować metody. Ze względu na ograniczenia implementacji, metody takie pozostają interpretowane do końca aplikacji.
Czy mogę dynamicznie kontrolować kompilator JIT?
Nie. Można przekazać opcje do kompilatora JIT, aby zmodyfikować zachowanie, ale tylko w czasie uruchamiania maszyny JVM, ponieważ kompilator JIT jest uruchamiany w tym samym czasie co wirtualna maszyna języka Java. Jednak program Java™ może używać interfejsu API java.lang.Compiler w celu włączenia i wyłączenia kompilatora JIT w czasie wykonywania.
Ile pamięci zużywa pamięć podręczna kodu?
Kompilator JIT korzysta z pamięci inteligentnie. Gdy pamięć podręczna kodu jest inicjowana, używa relatywnie małej ilości pamięci. Ponieważ więcej metod jest kompilowanych do kodu rodzimego, pamięć podręczna kodu dynamicznie rośnie, tak aby dostosować je do potrzeb programu. Miejsce zajmowane wcześniej przez odrzucane lub rekompilowane metody jest odzyskiwać i ponownie wykorzystywane. Gdy wielkość pamięci podręcznej kodu osiągnie predefiniowany maksymalny limit, przestaje rosać. Następnie kompilator JIT zatrzymuje kompilowanie metod, aby uniknąć wyczerpania pamięci systemowej i wpływając na stabilność aplikacji lub systemu operacyjnego. Początek zmian dla odświeżenia usługi 5W systemie z/OS® V2R3tryb rezydentności dla aplikacji 64-bitowych (RMODE64) jest domyślnie włączony. Opcja ta umożliwia JIT przydzielenie pamięci podręcznej kodu powyżej paska pamięci o pojemności 2 GB. To zachowanie JIT można wyłączyć, podając podopcję -Xjit:disableRMODE64 w wierszu komend.Koniec zmian dla odświeżenia usługi 5