Explique el uso Xms
y los Xmx
parámetros en las JVM. ¿Cuáles son los valores predeterminados para ellos?
java
memory-management
parameters
jvm
Pankaj
fuente
fuente
-Xmx128m -Xms64m
puede alcanzar un máximo de275m
RES mem, pero cuando se usa-Xmx128m -Xms128m
puede alcanzar un máximo de550m
RES mem Usar Java 8 Lo mejor es estresar el GC y ver lo que sucede ...Respuestas:
El indicador
Xmx
especifica el grupo de asignación de memoria máxima para una máquina virtual Java (JVM), mientras queXms
especifica el grupo de asignación de memoria inicial.Esto significa que su JVM se iniciará con una
Xms
cantidad de memoria y podrá usar unaXmx
cantidad máxima de memoria. Por ejemplo, al iniciar una JVM como la siguiente, comenzará con 256 MB de memoria y permitirá que el proceso use hasta 2048 MB de memoria:El indicador de memoria también se puede especificar en diferentes tamaños, como kilobytes, megabytes, etc.
El
Xms
indicador no tiene un valor predeterminado y, por loXmx
general, tiene un valor predeterminado de 256 MB. Un uso común para estas banderas es cuando te encuentras con unjava.lang.OutOfMemoryError
.Cuando use estas configuraciones, tenga en cuenta que estas configuraciones son para el montón de JVM , y que la JVM puede / usará más memoria que solo el tamaño asignado al montón. De la documentación de Oracle :
fuente
OutOfMemoryError
se producirá un error.-Xms256m
"256 MiB", no "256 MB", ya que utiliza potencias binarias en lugar de potencias de diez. Ver en.wikipedia.org/wiki/Binary_prefix . Además, debido a que se reserva un espacio inutilizable para un grupo adicional de espacio de Survivor, la cantidad de memoria realmente disponibleRuntime.getRuntime().maxMemory()
es menor que el valor especificado a través de -XmxEjecute el comando
java -X
y obtendrá una lista de todas las-X
opciones: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
así como muchas otras cosas que más importan. :)fuente
Puede especificarlo en su IDE. Por ejemplo, para Eclipse en Ejecutar configuraciones → argumentos de VM . Puedes ingresar
-Xmx800m -Xms500m
comofuente
La pregunta en sí ya se ha abordado anteriormente. Simplemente agregue 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.
fuente
- Tamaño de almacenamiento dinámico inicial de Xms para el inicio; sin embargo, durante el proceso de trabajo, el tamaño de almacenamiento dinámico puede ser inferior a -Xms debido a la inactividad de los usuarios o las iteraciones de GC. Este no es un tamaño de almacenamiento dinámico mínimo requerido.
-Xmx tamaño máximo de almacenamiento dinámico
fuente