Odpowiedzi:
Flaga Xmx
określa maksymalną pulę alokacji pamięci dla wirtualnej maszyny Java (JVM), a Xms
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:
java -Xms256m -Xmx2048m
Flaga pamięci może być również określona w różnych rozmiarach, takich jak kilobajty, megabajty i tak dalej.
-Xmx1024k
-Xmx512m
-Xmx8g
Xms
Flaga ma wartość domyślną, a Xmx
zazwyczaj ma domyślną wartość 256 MB. Częstym zastosowaniem tych flag jest, gdy napotkasz java.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 :
Pamiętaj, że JVM zużywa więcej pamięci niż tylko stertę. Na przykład metody Java, stosy wątków i uchwyty rodzime są przydzielane w pamięci oddzielnie od sterty, a także wewnętrzne struktury danych JVM.
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 -Xmx
Uruchom polecenie, java -X
a otrzymasz listę wszystkich -X
opcji:
C:\Users\Admin>java -X
-Xmixed mixed mode execution (default)
-Xint interpreted mode execution only
-Xbootclasspath:<directories and zip/jar files separated by ;>
set search path for bootstrap classes and resources
-Xbootclasspath/a:<directories and zip/jar files separated by ;>
append to end of bootstrap class path
-Xbootclasspath/p:<directories and zip/jar files separated by ;>
prepend in front of bootstrap class path
-Xdiag show additional diagnostic messages
-Xnoclassgc disable class garbage collection
-Xincgc enable incremental garbage collection
-Xloggc:<file> log GC status to a file with time stamps
-Xbatch disable background compilation
-Xms<size> set initial Java heap size.........................
-Xmx<size> set maximum Java heap size.........................
-Xss<size> set java thread stack size
-Xprof output cpu profiling data
-Xfuture enable strictest checks, anticipating future default
-Xrs reduce use of OS signals by Java/VM (see documentation)
-Xcheck:jni perform additional checks for JNI functions
-Xshare:off do not attempt to use shared class data
-Xshare:auto use shared class data if possible (default)
-Xshare:on require using shared class data, otherwise fail.
-XshowSettings show all settings and continue
-XshowSettings:all show all settings and continue
-XshowSettings:vm show all vm related settings and continue
-XshowSettings:properties show all property settings and continue
-XshowSettings:locale show all locale related settings and continue
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. :)
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
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.
-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 ...