2010-09-22 8 views
17

Qual è il valore predefinito per XX: MaxDirectMemorySize?Predefinito per XX: MaxDirectMemorySize

+0

Ricordo che il valore predefinito assume il valore di -Xmx. Questo dovrebbe essere verificato da un semplice test. – irreputable

+4

La memoria diretta viene utilizzata per altre cose specifiche non correlate all'heap. da quello che ho trovato nella mia esplorazione, sembra che 64 sia l'impostazione predefinita, usando -1 come il valore lo imposta su -Xmx. –

risposta

16

Da http://www.docjar.com/html/api/sun/misc/VM.java.html

vedo:

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; 

così appare per difetto a 64 mega.

+1

Questo - http://docs.oracle.com/cd/E15289_01/doc.40/e15062/optionxx.htm#BABGCFFB - lo contraddice direttamente, sostenendo che sarebbe "illimitato"? – StaxMan

+2

Il collegamento docs.oracle.com punta ai documenti per JRockit, non OpenJDK. – technomancy

+1

Il commento suggerisce che il valore, se non specificato sulla riga di comando, viene preso da maxDirectMemory(). Questo link qui (http://mail.openjdk.java.net/pipermail/core-libs-dev/2012-January/008884.html) corregge l'errore di battitura qui (non esiste un tale metodo) per maxMemory(), che a sua volta equivale al -Xmx impostato sulla riga di comando. –

5

Da sun.misc.VM, è Runtime.getRuntime.maxMemory(), è ciò che è configurato con -Xmx. Per esempio. se non si configurare -XX:MaxDirectMemorySize e fanno configurare -Xmx5g, il "default" MaxDirectMemorySize sarà anche 5 Gb, e il cumulo totale + utilizzo della memoria diretta delle app può crescere fino a 5 + 5 = 10 Gb.

Problemi correlati