Kategorie szkoleń | Egzaminy | Kontakt
  • 1
  • 15
  • 114

Mam świadomość, że maszyna JVM HotSpot stosuje rozmaite optymalizacje, ale mam wrażenie, że przydają się one głównie dla serwisów webowych, gdyż do zadziałania wymagają wielokrotnego uruchamiania danego fragmentu kodu.

A w jaki sposób działa optymalizacja, jeśli uruchamiamy aplikację desktopową? I czy można ręcznie dostroić parametry optymalizacji?

Maciej_Krauze
  • Zapytał
  • @ Maciej_Krauze | 21.06.2015
    • lider
    • laureat
    • 45
    • 16
    • 58

Odpowiedź (1)

  • 0

Podzielę się z Wami tym co udało mi się w międzyczasie dowiedzieć o oraclowej maszynie JVM HotSpot:

1. Maszyna wirtualna Javy wykonywała standardowo kod bajtowy. Just-In-Time Compiler (JIT), działający w czasie wykonywania programu i dbający o optymalizację, posiadał 2 tryby optymalizacji na poziomie funkcji: C1 i C2. Pierwszy był nastawiony na szybki start aplikacji, np. w środowisku graficznym, drugi na wydajność w dłuższej perspektywie użytkowania (np. na serwerze). Ponadto JIT zbierał na bieżąco statystyki wywołań funkcji i w zależności od zdefiniowanego progu liczby wywołań (przełącznik -XX:CompileThreshold) zastępował kod bajtowy funkcji kodem natywnym.

2. Przełom w optymalizacji nastąpił w późniejszych wersjach Java SE 7.Zamiast używanej wcześniej optymalizacji klienckiej C1 (przełącznik -client) lub serwerowej C2 (-server), wprowadzono więcej poziomów optymalizacji. Służy do tego przełącznik -XX:+TieredCompilation. JIT potrafi wtedy użyć trybu mieszanego: w początkowej fazie wykonywania kładzie nacisk na szybki start (C1), potem optymalizuje aplikację na wydajność.

 

3. O momencie, w którym dla danej funkcji JIT odpala optymalizację, decyduje parametr -XX:CompileThreshold=10000. Podana wartość określa ilość wywołań danej funkcji po których następuje optymalizacja. 10000 to wartość domyślna.

 

4. Java w wersji 8 ma standardowo włączoną opcję TieredCompilation i optymalizacjami zawiaduje automat.

 

P.S. Przełączniki typu -XX, wedle danych Oracle, są tworem dość niestabilnym i ich działanie może zostać w dowolnej chwili zmienione.

Maciej_Krauze
  • Odpowiedział
  • @ Maciej_Krauze | 19.08.2015
    • lider
    • laureat
    • 45
    • 16
    • 58