Asignación de memoria de pila inicial de JVM [duplicado]

Dec 07 2020

He especificado los valores -Xms y -Xmx como los mismos, por ejemplo, 4GB. Ahora, cuando inicio mi aplicación de arranque de primavera, suponía que el sistema operativo asignará 4 GB de memoria justo después de iniciar la aplicación, ya que ese es el valor especificado mediante el argumento -Xms. Pero cuando verifiqué el conjunto residente de la aplicación y también la memoria del montón (usando JMX), puedo ver que la memoria asignada sigue siendo inferior a 1 GB. Entonces, ¿eso significa que el sistema operativo no asigna necesariamente la memoria especificada usando -Xms?

Gracias por adelantado.

Respuestas

JurajMartinka Dec 07 2020 at 12:23

No dijo qué sistema operativo y qué proveedor / versión de JVM, pero a menudo el sistema operativo asigna páginas de manera perezosa, es decir, no están en la RAM ("residentes") a menos que sea necesario. Si su aplicación en realidad no necesita esa memoria dinámica, no será residente. También existe una "política de tamaño adaptable" que puede reducirse incluso por debajo de "-Xms" si su ocupación es demasiado baja:https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gc-ergonomics.html