¿Cuáles son los parámetros Xms y Xmx cuando se inician las JVM?

Explique el uso de los parámetros Xms y Xmx en las JVM. ¿Cuáles son los valores predeterminados para ellos?

El indicador Xmx especifica el grupo máximo de asignación de memoria para una máquina virtual Java (JVM), mientras que Xms especifica el grupo de asignación de memoria inicial.

Esto significa que su JVM se iniciará con la cantidad de memoria Xms y podrá usar un máximo de Xmx de memoria. Por ejemplo, iniciar una JVM como la siguiente lo iniciará con 256 MB de memoria y permitirá que el proceso use hasta 2048 MB de memoria:

 java -Xms256m -Xmx2048m 

El indicador de memoria también se puede especificar en varios tamaños, como kilobytes, megabytes, etc.

 -Xmx1024k -Xmx512m -Xmx8g 

El indicador Xms no tiene valor predeterminado, y Xmx normalmente tiene un valor predeterminado de 256 MB. Un uso común de estos indicadores es cuando encuentras un java.lang.OutOfMemoryError .

Al utilizar estas configuraciones, tenga en cuenta que estas configuraciones son para el almacenamiento dynamic de la JVM, y que la JVM puede / usará más memoria que solo el tamaño asignado al almacenamiento dynamic. De la documentación de Oracle :

Tenga en cuenta que la JVM usa más memoria que solo el montón. Por ejemplo, los métodos Java, las stacks de subprocesos y los identificadores nativos se asignan en memoria separada del montón, así como las estructuras de datos internas de JVM.

Ejecute el comando java -X y obtendrá una lista de todas las opciones -X :

 C:\Users\Admin>java -X -Xmixed mixed mode execution (default) -Xint interpreted mode execution only -Xbootclasspath: set search path for bootstrap classes and resources -Xbootclasspath/a: append to end of bootstrap class path -Xbootclasspath/p: prepend in front of bootstrap class path -Xdiag show additional diagnostic messages -Xnoclassgc disable class garbage collection -Xincgc enable incremental garbage collection -Xloggc: log GC status to a file with time stamps -Xbatch disable background comstacktion -Xms set initial Java heap size......................... -Xmx set maximum Java heap size......................... -Xss 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 

Las opciones -X no son estándar y están sujetas a cambios sin previo aviso.

Espero que esto te ayude a entender Xms, Xmx y muchas otras cosas más importantes. 🙂

Puedes especificarlo en tu IDE. Por ejemplo, para Eclipse en Configuraciones de ejecuciónArgumentos de VM . Usted ingresa -Xmx800m -Xms500m :

Ingrese la descripción de la imagen aquí

La parte principal de la pregunta ya se ha abordado anteriormente. Solo agregando parte de los valores predeterminados.

Según http://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/jrdocs/refman/optionX.html

El valor predeterminado de Xmx dependerá de la plataforma y la cantidad de memoria disponible en el sistema.