Red de conocimiento informático - Aprendizaje de programación - jvm basic-(4)-Reglas de cálculo de edad dinámica de objetos

jvm basic-(4)-Reglas de cálculo de edad dinámica de objetos

Aún no es tan bueno, puedes echar un vistazo al código fuente para ver qué tan dinámicamente se calcula la edad del objeto ~

-XX: MaxTenuringThreshold=X X X El valor predeterminado es 15, 15 significa Desde eden--gt;survivor object edad 1, sobreviviente--gt;eden object edad 1 hasta que la edad alcanza los 15 y comienza la generación anterior.

Cuando Hotspot atraviesa todos los objetos, acumula el tamaño del objeto de pequeño a grande en edad. Cuando el tamaño de edad acumulado excede la mitad del área de Survivor, toma la edad del objeto y MaxTenuringThreshold, y luego toma la edad del objeto. edad y sobreviviente La edad de la región para la generación anterior. MaxTenuringThreshold, como nuevo umbral de edad de promoción.

Por ejemplo:

Por ejemplo: Área de superviviente = 64 M, superviviente esperado = 32 M, en este momento el tamaño acumulado de los objetos con edad <= 2 en el área de Superviviente es 41 M, 41M es mayor que 32M, por lo que el umbral de edad de promoción se establece en 2, el próximo GC menor será el próximo GC menor que promoverá objetos con una edad mayor a 2 a la generación anterior. Esto hará que la generación anterior se llene rápidamente, lo que activará el GC anterior (el GC anterior tiene tres STW), por lo que se recomienda ajustar el parámetro -XX: SurvivorRatio.

1. Si el umbral establecido de acuerdo con MaxTenuringThreshold se fija como condición de promoción: a) MaxTenuringThreshold se establece demasiado grande y el objeto que debe promocionarse permanecerá en el área Survivor hasta que el área Survivor se desborde. Una vez que se desborde, Eden se desbordará, los objetos en Svuvivor ya no serán promovidos a la vejez de acuerdo con su edad, por lo que el mecanismo de envejecimiento del objeto no será válido.

2. En este caso, una gran cantidad de objetos a corto plazo se promoverán a la generación anterior y el espacio en la generación anterior crecerá rápidamente, lo que resultará en GC importantes frecuentes.

2. La ejecución de la misma aplicación en diferentes momentos es diferente: la ejecución de tareas especiales o cambios en la composición del tráfico provocarán fluctuaciones en la distribución del ciclo de vida del objeto, por lo que la configuración de umbral fijo no puede adaptarse dinámicamente a esto. cambia, por lo que causa el mismo problema que el anterior.

En resumen, para adaptarse mejor a las condiciones de memoria de diferentes programas, las máquinas virtuales no siempre requieren que los objetos entren en la etapa de envejecimiento después del umbral Maxtenuring.

Portal jvm-object-age(-XX: PrintTenuringDistribution)