Diferencia en memoria de montón usada, comprometida y máxima

1. Información general

En este breve artículo, veremos la diferencia entre varias métricas de tamaño de memoria en la JVM.

Primero, hablaremos sobre cómo funciona el tamaño adaptativo y luego evaluaremos la diferencia entre los tamaños máximo, usado y comprometido.

2. Tamaño máximo y tamaño adaptable

Dos valores controlan el tamaño del montón de JVM: un valor inicial especificado mediante el indicador -Xms y otro valor máximo controlado por el indicador de ajuste -Xmx .

Si no especificamos estos indicadores, la JVM elegirá valores predeterminados para ellos. Estos valores predeterminados dependen del sistema operativo subyacente, la cantidad de RAM disponible y, por supuesto, la implementación de JVM en sí:

Independientemente del tamaño real y los valores predeterminados, el tamaño del montón comienza con un tamaño inicial. A medida que asignamos más objetos, el tamaño del montón puede crecer para adaptarse a eso. Sin embargo, el tamaño del montón no puede superar el tamaño máximo del montón.

En pocas palabras, el tamaño máximo de almacenamiento dinámico es el tamaño especificado mediante el indicador -Xmx . Además, cuando no especificamos explícitamente el -Xmx , la JVM calcula un tamaño máximo predeterminado .

3. Tamaño utilizado

Ahora, supongamos que asignamos algunos objetos desde que se inició el programa. El tamaño del montón puede crecer un poco para adaptarse a nuevos objetos:

El espacio utilizado es la cantidad de memoria que ocupan actualmente los objetos Java . Siempre es menor o igual que el tamaño máximo.

4. Tamaño comprometido

El tamaño comprometido es la cantidad de memoria que se garantiza que estará disponible para su uso por la máquina virtual Java . El tamaño de la memoria comprometida es siempre mayor o igual que el tamaño utilizado.

5. Conclusión

En este breve artículo, vimos la diferencia entre el tamaño máximo, usado y comprometido del montón.