Wyjaśnij użycie Xms
i Xmx
parametry w JVM. Jakie są dla nich wartości domyślne?
java
memory-management
parameters
jvm
Pankaj
źródło
źródło
-Xmx128m -Xms64m
może osiągać szczyt wokół275m
pamięci OZE, ale podczas używania-Xmx128m -Xms128m
może osiągać szczyt wokół550m
pamięci OZE Korzystanie z Java 8 Najlepiej jest podkreślić GC i spojrzeć na to, co się dzieje ...Odpowiedzi:
Flaga
Xmx
określa maksymalną pulę alokacji pamięci dla wirtualnej maszyny Java (JVM), aXms
określa początkową pulę alokacji pamięci.Oznacza to, że twoja JVM zostanie uruchomiona z
Xms
ilością pamięci i będzie w stanie wykorzystać maksymalnąXmx
ilość pamięci. Na przykład uruchomienie maszyny JVM jak poniżej spowoduje uruchomienie jej z 256 MB pamięci i pozwoli procesowi wykorzystać do 2048 MB pamięci:Flaga pamięci może być również określona w różnych rozmiarach, takich jak kilobajty, megabajty i tak dalej.
Xms
Flaga ma wartość domyślną, aXmx
zazwyczaj ma domyślną wartość 256 MB. Częstym zastosowaniem tych flag jest, gdy napotkaszjava.lang.OutOfMemoryError
.Korzystając z tych ustawień, należy pamiętać, że te ustawienia dotyczą sterty maszyny JVM i że maszyna JVM może / będzie zużywać więcej pamięci niż tylko rozmiar przydzielony do sterty. Z dokumentacji Oracle :
źródło
OutOfMemoryError
nastąpi błąd.-Xms256m
jest „256 MiB”, a nie „256 MB”, ponieważ korzysta z mocy binarnych zamiast dziesięciu. Zobacz en.wikipedia.org/wiki/Binary_prefix . Ponadto, ponieważ pewna niepotrzebna przestrzeń jest zarezerwowana na dodatkową pulę przestrzeni Survivor, ilość dostępnej pamięci, zgodnie z nią,Runtime.getRuntime().maxMemory()
jest mniejsza niż wartość określona przez -XmxUruchom polecenie,
java -X
a otrzymasz listę wszystkich-X
opcji:Opcje -X są niestandardowe i mogą ulec zmianie bez powiadomienia.
Mam nadzieję, że pomoże ci to zrozumieć
Xms
,Xmx
a także wiele innych rzeczy, które są najważniejsze. :)źródło
Możesz to określić w swoim IDE. Na przykład dla argumentów Eclipse w Uruchamianie konfiguracji → VM . Możesz wpisać
-Xmx800m -Xms500m
jakoźródło
Samo pytanie zostało już poruszone powyżej. Po prostu dodaje część wartości domyślnych.
Zgodnie z http://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/jrdocs/refman/optionX.html
Domyślna wartość Xmx będzie zależeć od platformy i ilości pamięci dostępnej w systemie.
źródło
-Xms początkowy rozmiar sterty dla uruchomienia, jednak podczas procesu roboczego rozmiar sterty może być mniejszy niż -Xms z powodu braku aktywności użytkowników lub iteracji GC. To nie jest minimalny wymagany rozmiar sterty.
-Xmx maksymalny rozmiar sterty
źródło