2010-09-22 16 views
17

XX: MaxDirectMemorySize için varsayılan değer nedir? http://www.docjar.com/html/api/sun/misc/VM.java.htmlXX için varsayılan: MaxDirectMemorySize

itibaren

+0

Varsayılanın -Xmx değerini aldığını hatırlıyorum. Bu basit bir testle doğrulanmalıdır. – irreputable

+4

Doğrudan bellek, yığınla ilgili olmayan diğer belirli şeyler için kullanılır. keşiflerimde bulduğumdan, 64 değeri varsayılan değerdir, -1 değeri -Xmx değerine ayarlanır. –

cevap

16

i bakın:

163  // A user-settable upper limit on the maximum amount of allocatable direct 
164  // buffer memory. This value may be changed during VM initialization if 
165  // "java" is launched with "-XX:MaxDirectMemorySize=<size>". 
166  // 
167  // The initial value of this field is arbitrary; during JRE initialization 
168  // it will be reset to the value specified on the command line, if any, 
169  // otherwise to Runtime.getRuntime.maxDirectMemory(). 
170  // 
171  private static long directMemory = 64 * 1024 * 1024; 

yüzden 64 MB'lik varsayılan olarak görünür.

+1

Bu - http://docs.oracle.com/cd/E15289_01/doc.40/e15062/optionxx.htm#BABGCFFB - "sınırsız" olduğunu iddia ederek doğrudan çelişir mi? – StaxMan

+2

docs.oracle.com bağlantısı, OpenJDK değil, JRockit belgelerine işaret eder. – technomancy

+1

Açıklama, komut satırında belirtilmemişse değerin, maxDirectMemory() yönteminden alındığını önerir. Bu bağlantıyı burada (http://mail.openjdk.java.net/pipermail/core-libs-dev/2012-January/008884.html) yazım hatası (burada böyle bir yöntem yoktur) maxMemory() için komut satırında ayarladığınız -Xmx'e eşittir. –

5

sun.misc.VM'dan, Runtime.getRuntime.maxMemory(), -Xmx ile yapılandırılmış olan. Örneğin. Eğer değil yapılandırmak -XX:MaxDirectMemorySize ve yapılandırmak -Xmx5g do eğer "varsayılan" MaxDirectMemorySize da 5 Gb olacak ve toplam yığın + app doğrudan bellek kullanımı 5 + 5 = 10 Gb kadar uzayabilir.