Jakie są parametry-Xms i-Xmx podczas uruchamiania JVM?

Proszę wyjaśnić użycie parametrów Xms i Xmx w JVMs. Jakie są dla nich wartości domyślne?

Author: Hearen, 2013-02-07

5 answers

Znacznik Xmx określa maksymalną pulę alokacji pamięci dla maszyny wirtualnej Java (JVM), podczas gdy Xms określa początkową pulę alokacji pamięci.

Oznacza to, że JVM zostanie uruchomiony z Xms ilością pamięci i będzie mógł wykorzystać maksymalnie Xmx ilość pamięci. Na przykład uruchomienie JVM, jak poniżej, uruchomi go z 256 MB pamięci i pozwoli procesowi na użycie do 2048 MB pamięci:

java -Xms256m -Xmx2048m

Znacznik pamięci może być również określony w różne rozmiary, takie jak kilobajty, megabajty i tak dalej.

-Xmx1024k
-Xmx512m
-Xmx8g

Znacznik Xms nie ma wartości domyślnej, a Xmx zazwyczaj ma wartość domyślną 256 MB. Często używa się tych flag, gdy napotkasz java.lang.OutOfMemoryError.

Podczas korzystania z tych ustawień, należy pamiętać, że te ustawienia są dla sterty JVM , i że JVM może / będzie używać więcej pamięci niż tylko rozmiar przypisany do sterty. Z dokumentacji Oracle :

Zauważ, że JVM wykorzystuje więcej pamięci niż tylko stertę. Na przykład metody Java, stosy wątków i natywne uchwyty są przydzielane w pamięci oddzielonej od sterty, a także wewnętrzne struktury danych JVM.

 1505
Author: hexacyanide,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-03-23 06:49:15

Uruchom polecenie java -X, a otrzymasz listę wszystkich opcji -X:

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 to pomoże Ci zrozumieć Xms, Xmx jak również wiele innych rzeczy, które mają największe znaczenie. :)

 341
Author: Rupesh Yadav,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-03-23 06:51:38

Możesz go określić w swoim IDE. Na przykład dla Eclipse w Uruchom konfiguracjeargumenty VM . Możesz wpisać -Xmx800m -Xms500m jako

Tutaj wpisz opis obrazka

 20
Author: Mehrez BEN MOHAMED,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-03-23 06:51:58

Samo pytanie zostało już omówione powyżej. Wystarczy dodać 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.

 14
Author: Abhishek Aich,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-03-23 06:54:28

-Xms początkowy rozmiar sterty dla uruchomienia, jednak podczas procesu roboczego rozmiar sterty może być mniejszy niż - Xms ze względu na nieaktywność użytkowników lub iteracje GC. Nie jest to minimalny wymagany rozmiar sterty.

-Xmx maksymalny rozmiar stosu

 12
Author: lazylead,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-01-02 07:04:01