Lütfen JVM'lerde Xms
ve Xmx
parametrelerinin kullanımını açıklayınız. Bunlar için varsayılan değerler nelerdir?
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 ve
Xmxtipik olarak 256 MB varsayılan değerine sahiptir. Bu bayraklar için yaygın bir kullanım, bir
java.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.
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:<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
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 :)
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.