Yanıtlar:
Bayrak Xmx
, Java sanal makinesi (JVM) için maksimum bellek ayırma havuzunu Xms
belirtirken, ilk bellek ayırma havuzunu belirtir.
Bu, JVM'nizin Xms
bellek miktarıyla başlatılacağı ve maksimum Xmx
bellek kullanabileceği anlamına gelir . Örneğin, aşağıdaki gibi bir JVM'yi başlatmak 256 MB bellekle başlayacak ve işlemin 2048 MB'a kadar bellek kullanmasına izin verecektir:
java -Xms256m -Xmx2048m
Bellek bayrağı, kilobayt, megabayt vb. Gibi farklı boyutlarda da belirtilebilir.
-Xmx1024k
-Xmx512m
-Xmx8g
Xms
Bayrak varsayılan değerine sahiptir ve Xmx
tipik olarak 256 MB'lık bir varsayılan değeri vardır. Bu bayraklar için yaygın bir kullanım, bir java.lang.OutOfMemoryError
.
Bu ayarları kullanırken, bu ayarların JVM'nin yığını için olduğunu ve JVM'nin yalnızca öbeğe ayrılan boyuttan daha fazla bellek kullanabileceğini / kullanacağını unutmayın. Gönderen Oracle'ın belgelerinde :
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 tanıtıcılar bellekte yığıntan ayrı olarak JVM dahili veri yapılarına ayrılır.
OutOfMemoryError
gerçekleşir.
-Xms256m
"256 MiB", "256 MB" değil, çünkü on güçten ziyade ikili güçlerle çalışıyor. Bkz. En.wikipedia.org/wiki/Binary_prefix . Buna ek olarak, fazladan bir Survivor alanı havuzu için bazı kullanılamayan alan Runtime.getRuntime().maxMemory()
Komutu çalıştırın java -X
ve tüm -X
seçeneklerin 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 bildirilmeksizin değiştirilebilir.
Bu anlamanıza yardımcı olacağını umuyoruz Xms
, Xmx
en önemli olan yanı sıra birçok başka şeyler. :)
IDE'nizde belirtebilirsiniz. Örneğin, Çalıştırma Yapılandırmaları → VM bağımsız değişkenlerindeki Eclipse için . Sen girebilirsiniz -Xmx800m -Xms500m
olarak
Sorunun kendisi yukarıda zaten ele alındı. Varsayılan değerlerin bir kısmını eklemeniz yeterlidir.
Http://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/jrdocs/refman/optionX.html uyarınca
Xmx'in varsayılan değeri platforma ve sistemde kullanılabilir bellek miktarına bağlı olacaktır.
-Xmx128m -Xms64m
etrafta zirve olabilir275m
Res mem, ama kullanırken-Xmx128m -Xms128m
etrafında zirve olabilir550m
RES GC ve neler olduğuna göz ... strese Java 8 En şeyi olduğu kullanma mem