Szukaj…


Uwagi

Historia

Kompilator JIT firmy Symantec był dostępny w Sun Java od wersji 1.1.5, ale miał problemy.

Kompilator Hotspot JIT został dodany do Sun Java w wersji 1.2.2 jako wtyczka. W Javie 1.3 JIT był domyślnie włączony.

(Źródło: Kiedy Java otrzymała kompilator JIT?

Przegląd

wprowadź opis zdjęcia tutaj

Kompilator Just-In-Time (JIT) jest składnikiem środowiska wykonawczego Java ™, które poprawia wydajność aplikacji Java w czasie wykonywania.

  • Programy Java składają się z klas, które zawierają neutralne dla platformy kody bajtowe, które mogą być interpretowane przez JVM na wielu różnych architekturach komputerowych.
  • W czasie wykonywania JVM ładuje pliki klas, określa semantykę każdego pojedynczego kodu bajtowego i wykonuje odpowiednie obliczenia.

Dodatkowe użycie procesora i pamięci podczas interpretacji oznacza, że aplikacja Java działa wolniej niż aplikacja macierzysta.

Kompilator JIT pomaga poprawić wydajność programów Java, kompilując kody bajtowe do natywnego kodu maszynowego w czasie wykonywania.

Kompilator JIT jest domyślnie włączony i jest aktywowany po wywołaniu metody Java. Kompilator JIT kompiluje kody bajtowe tej metody do natywnego kodu maszynowego, kompilując go "just in time" aby go uruchomić.

Gdy metoda została skompilowana, JVM wywołuje skompilowany kod tej metody bezpośrednio, zamiast ją interpretować. Teoretycznie, jeśli kompilacja nie wymagała czasu procesora i użycia pamięci, kompilacja każdej metody mogłaby pozwolić programowi Java zbliżyć się do szybkości aplikacji natywnej.

Kompilacja JIT wymaga czasu procesora i użycia pamięci. Przy pierwszym uruchomieniu JVM wywoływane są tysiące metod. Kompilacja wszystkich tych metod może znacząco wpłynąć na czas uruchamiania, nawet jeśli program ostatecznie osiągnie bardzo dobrą wydajność szczytową.


  • W praktyce metody nie są kompilowane przy pierwszym wywołaniu. Dla każdej metody JVM utrzymuje call count która jest zwiększana przy każdym call count metody.
  • JVM interpretuje metodę, dopóki jej liczba wywołań nie przekroczy progu kompilacji JIT.
  • Dlatego często używane metody są kompilowane wkrótce po uruchomieniu JVM, a rzadziej stosowane metody są kompilowane znacznie później lub wcale.
  • Próg kompilacji JIT pomaga JVM w szybkim uruchomieniu i nadal ma lepszą wydajność.
  • Próg został starannie wybrany, aby uzyskać optymalną równowagę między czasem uruchamiania a wydajnością długoterminową.
  • Po skompilowaniu metody jej licznik wywołań jest resetowany do zera, a kolejne wywołania metody nadal zwiększają licznik.
  • Gdy liczba wywołań metody osiągnie próg ponownej kompilacji JIT, kompilator JIT kompiluje ją po raz drugi, stosując większy wybór optymalizacji niż w poprzedniej kompilacji.
  • Proces ten powtarza się, aż do osiągnięcia maksymalnego poziomu optymalizacji.

Najbardziej obciążone metody programu Java są zawsze optymalizowane najbardziej agresywnie, maksymalizując korzyści związane z wydajnością korzystania z kompilatora JIT.

Kompilator JIT może także mierzyć operational data at run time i wykorzystywać te dane w celu poprawy jakości dalszych ponownych kompilacji.

Kompilator JIT można wyłączyć, w takim przypadku cały program Java zostanie zinterpretowany. Wyłączenie kompilatora JIT nie jest zalecane, z wyjątkiem diagnozowania lub obejścia problemów z kompilacją JIT.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow