2011-02-03 4 views

Odpowiedz

27

tryb serwera nie oznacza "nie mieszany". To są różne ustawienia.

Mieszany oznacza, że ​​JVM będzie mieszać kod skompilowany i zinterpretowany. Możesz opcjonalnie przełączyć się do trybu w pełni zinterpretowanego za pomocą przełącznika -Xint (zwykle nie chcesz tego robić).

Tryb serwera oznacza, że ​​kompilator hot spot będzie działał z ustawieniami serwera. Ogólne założenie jest takie, że maszyny wirtualne w trybie serwera działają długo, więc w tym celu zostaną przeprowadzone optymalizacje.

Jeśli widzisz tryb mieszany, nie oznacza to, że Twoja maszyna wirtualna nie działa w trybie serwera.

EDIT: Jeśli chcesz sprawdzić, co naprawdę działa, spróbuj wyjście

System.out.println(System.getProperty("java.vm.name")); 
System.out.println(System.getProperty("java.vm.info")); 

Przynajmniej na słońce VM lub OpenJDK to daje wskazówkę. Możesz zauważyć, że zawsze będziesz uruchamiał maszynę wirtualną serwera, jeśli używasz systemu 64-bitowego.

+1

'-Xcomp' tylko dla copmiled. I nie chcesz tego robić./Nawiasem mówiąc, serwer HotSpot ma swój własny interpreter (pobiera informacje profilowania, co sprawia, że ​​jest nieco wolniejszy od standardowej interpretacji torfowiska). –

4

Hotspot Virtual Machine

Zarówno klient i serwer Hotspot kompilatory są zawarte w Java Runtime Environment.

Domyślnie kompilator klienta jest włączony, ale w przypadku aplikacji intensywnych po stronie serwera można uruchomić kompilator serwera za pomocą opcji środowiska wykonawczego -server. Wirtualna maszyna Hotspot zwykle działa w trybie mieszanym, jak widać na wyjściu -wersji. Tryb mieszany oznacza, że ​​Hotspot dynamicznie kompiluje kody bajtowe Java do kodu natywnego po spełnieniu szeregu kryteriów, w tym liczby przeprowadzonych metod przez interpreter. Mieszany tryb runtime zwykle zapewnia najlepszą wydajność.

+2

Sugeruje to, że opcja -serwer wyłącza tryb mieszany . Artykuł pochodzi z 2000 roku, więc prawdopodobnie nie jest tak dokładny. – extraneon

Powiązane problemy