Maszyna wirtualna Javy pozwala na ustawienie wielu różnych parametrów podczas uruchamiania, które moją wpływ na jej działanie. Pozwalają one m.in. na optymalizację pracy GC czy też związane z wielkością zajmowanej pamięci.
Jednym z parametrów jest AggressiveOpts
, który pozwala na włączenie różnych parametrów optymalizacyjnych, które mogą zostać włączone w kolejnym wydaniu JVM. Warto jednak pamiętać, że wraz z każdym wydanie JVM lista tych opcji może się zmienć a ciężko znaleźć informację, jakie parametry są aktualnie używane.
Z pomocą tutaj przychodzą dwie opcje JVM:
PrintFlagsFinal
– pozwala ona na wyświetlenie wartości wszystkich dopuszczalnych opcjiUnlockDiagnosticVMOptions
– daje dostęp do dodatkowych opcji konfiguracyjnych
I tak listę wszystkich parametrów wraz z ich wartościami można obejrzeć przy pomocy polecenia:
A lista dla włączonej optymalizacji AggressiveOpts
:
Lista jest dosyć spora, więc prościej będzie zobaczyć po prostu różnice pomiędzy uruchomieniem JVM z i bez parametru AggressiveOpts
:
<(java -XX:+AggressiveOpts -XX:+PrintFlagsFinal -XX:+UnlockDiagnosticVMOptions -version )
W wersji JVM 1.6.26 wyświetli listę 6 różnych opcji, których ustawienie się różni. Łatwo także sprawdzić, czym się różni uruchomienie JVM z parametrem server
oraz bez.
Dla ułatwienia analizy różnic, zamiast polecenia diff
można użyć np. vimdiff
:
<(java -XX:+AggressiveOpts -XX:+PrintFlagsFinal -XX:+UnlockDiagnosticVMOptions -version )