JVM başlatılırken -Xms ve -Xmx parametreleri nelerdir?

Lütfen JVM'lerde Xms ve Xmx parametrelerinin kullanımını açıklayınız. Bunlar için varsayılan değerler nelerdir?

Çözüm

Xmx bayrağı bir Java sanal makinesi (JVM) için maksimum bellek ayırma havuzunu belirtirken, Xms ilk bellek ayırma havuzunu belirtir.

Bu, JVM'nizin Xms bellek miktarı ile başlatılacağı ve maksimum Xmx bellek miktarını kullanabileceği anlamına gelir. Örneğin, bir JVM'yi aşağıdaki gibi başlatmak, onu 256 MB bellekle başlatacak ve işlemin 2048 MB'a kadar bellek kullanmasına izin verecektir:

java -Xms256m -Xmx2048m

Bellek bayrağı kilobayt, megabayt gibi farklı boyutlarda da belirtilebilir.

-Xmx1024k
-Xmx512m
-Xmx8g

Xmsbayrağının varsayılan bir değeri yoktur veXmxtipik olarak 256 MB varsayılan değerine sahiptir. Bu bayraklar için yaygın bir kullanım, birjava.lang.OutOfMemoryError` ile karşılaştığınız zamandır.

Bu ayarları kullanırken, bu ayarların JVM'nin heap'i için olduğunu ve JVM'nin heap'e ayrılan boyuttan daha fazla bellek kullanabileceğini/ kullanacağını unutmayın. Oracle'ın belgelerinden]1:

JVM'nin yalnızca yığından daha fazla bellek kullandığını unutmayın. Örneğin Java yöntemleri, iş parçacığı yığınları ve yerel tutamaçlar, JVM dahili veri yapılarının yanı sıra yığından ayrı bir bellekte tahsis edilir.

Yorumlar (9)

Java -Xkomutunu çalıştırdığınızda tüm-X` seçeneklerinin bir listesini alacaksınız:

C:\Users\Admin>java -X
-Xmixed           mixed mode execution (default)
-Xint             interpreted mode execution only
-Xbootclasspath:
                      set search path for bootstrap classes and resources
-Xbootclasspath/a:
                      append to end of bootstrap class path
-Xbootclasspath/p:
                      prepend in front of bootstrap class path
-Xdiag            show additional diagnostic messages
-Xnoclassgc       disable class garbage collection
-Xincgc           enable incremental garbage collection
-Xloggc:    log GC status to a file with time stamps
-Xbatch           disable background compilation
-Xms        set initial Java heap size.........................
-Xmx        set maximum Java heap size.........................
-Xss        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

X seçenekleri standart değildir ve önceden haber verilmeksizin değiştirilebilir.

Umarım bu Xms, Xmx ve en önemli diğer birçok şeyi anlamanıza yardımcı olur :)

Yorumlar (0)

Sorunun kendisi yukarıda zaten ele alınmıştır. Sadece varsayılan değerlerin bir kısmını ekliyorum.

http://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/jrdocs/refman/optionX.html'a göre

Xmx'in varsayılan değeri platforma ve sistemdeki mevcut bellek miktarına bağlı olacaktır.

Yorumlar (1)