2010-09-22 30 views
17

¿Cuál es el valor predeterminado para XX: MaxDirectMemorySize?Predeterminado para XX: MaxDirectMemorySize

+0

Recuerdo que el valor predeterminado es tomar el valor de -Xmx. Esto se debe verificar con una prueba simple. – irreputable

+4

memoria directa se utiliza para otras cosas específicas no relacionadas con el montón. por lo que encontré en mi exploración, parece que 64 es el valor predeterminado, usando -1 a medida que el valor lo establece en -Xmx. –

Respuesta

16

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

que veo:

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; 

por lo que aparece por defecto a 64 megas.

+1

Esto - http://docs.oracle.com/cd/E15289_01/doc.40/e15062/optionxx.htm#BABGCFFB - ¿lo contradice directamente, alegando que sería "ilimitado"? – StaxMan

+2

El enlace docs.oracle.com apunta a los documentos para JRockit, no OpenJDK. – technomancy

+1

El comentario sugiere que el valor, si no se especifica en la línea de comandos, se toma de maxDirectMemory(). Este enlace aquí (http://mail.openjdk.java.net/pipermail/core-libs-dev/2012- enero/008884.html) corrige el error tipográfico aquí (no existe tal método) para maxMemory(), que a su vez es igual a -Xmx que estableces en la línea de comando. –

5

De sun.misc.VM, es Runtime.getRuntime.maxMemory(), eso es lo que se configura con -Xmx. P.ej. si no lo hace configurar -XX:MaxDirectMemorySize y hacen configurar -Xmx5g, el "defecto" MaxDirectMemorySize también será de 5 Gb, y el montón total de + uso de memoria directa de la aplicación puede crecer hasta 5 + 5 = 10 Gb.

Cuestiones relacionadas