JVM observa el área de cinco pilas

JVM observa el área de cinco pilas

En la JVM, el área de almacenamiento dinámico es la máxima prioridad. A través del estudio del artículo anterior, sabemos que no habrá recolección de basura en el área de pila, por lo tanto, la recolección de basura a la que se hace referencia a menudo son en realidad los datos en el área de pila. Aquí, veremos la legendaria generación nueva, vieja y permanente (metaspace). Kaige Java (kaigejava) da la bienvenida a todos para que aprendan juntos.

Montón:

Solo hay una memoria de pila para una instancia de JVM y el tamaño de la memoria de pila se puede ajustar. Después de que el cargador de clases lee el archivo de clases, necesita poner las clases, los métodos y las variables constantes en la memoria del montón para guardar la información real de todos los tipos de referencia para facilitar la ejecución del ejecutor. La memoria del montón se divide en tres partes:

Partición de memoria de pila:

Espacio Joven Generación Joven / Nuevo

Espacio de generación de tenencia 老 年代 Antiguo / Tenencia

Espacio permanente Perm

Diagrama esquemático de la memoria del montón antes de Java 7:

0kivWHDU4Se


Proceso de versión corta:

0kivWHfEwq0

0kivWHwtvEm


El área de recién nacidos es el área donde las clases nacen, crecen y mueren, una clase es generada, aplicada y finalmente recolectada por el recolector de basura para terminar con su vida.

El área de recién nacidos se divide en dos partes: espacio Edén y espacio Superviviente. Todas las clases son nuevas en Eden Park.

Hay dos áreas de supervivencia: área 0 (espacio de Superviviente 0) y área 1 (espacio de Superviviente 1).

Cuando se agota el espacio en el Eden Park, el programa necesita crear objetos. El recolector de basura de la JVM realizará la recolección de basura (Minor GC, también llamado Light GC o YGC) en el Eden Park, de modo que el Eden Park ya no sea utilizado por otros objetos. El objeto al que se hace referencia se destruye. Luego, los objetos restantes en el Jardín del Edén se mueven a la zona superviviente 0 (también llamada zona de origen). Si el área superviviente 0 también está llena, el área se recolecta de nuevo como basura y luego se traslada al área 1 (también llamada área).

¿Qué pasa si el Distrito 1 también está lleno? Después de 15 YGC, el Área de supervivencia también está llena. En este momento, la JVM moverá los datos al área de retiro. Si el área de retiro también está llena, MajorGC (también llamado FGC de inspección de GC completa) se realizará en este momento. Realice una GC completa para limpiar la memoria en el área de cuidado de ancianos. Si después de realizar la GC completa en el área envejecida, se encuentra que el objeto aún no se puede guardar, se producirá una excepción OOM (OutOfMemoryError) en este momento.

Si java.lang.OutOfMemoryError: el espacio de almacenamiento dinámico de Java es anormal. Muestra que la memoria dinámica de la máquina virtual Java no es suficiente. Hay dos razones principales:

1: La configuración de la memoria del montón de la máquina virtual Java no es suficiente, puede ajustarla a través de los parámetros -Xms y -Xmx

2: Se crea una gran cantidad de objetos grandes en el código y el recolector de basura no puede reciclarlos durante mucho tiempo (se hace referencia a la dirección de memoria)

Cuando sus talentos no puedan apoyar sus ambiciones, debe calmarse y aprender;

Cuando su habilidad no pueda controlar su objetivo, debe establecerse y practicar;

Los sueños no son impetuosos, sino precipitación y acumulación. Solo la belleza que se puede deletrear, pero la brillantez que no ha estado esperando. La oportunidad siempre se deja a la persona que más desea. Aprende a hablarte en el fondo de tu corazón y preguntarte qué quieres Vida, cálmate para aprender, acomódate con paciencia, entrégate y anímate!


Supongo que te gusta

Origin blog.51cto.com/kaigejava/2541126
Recomendado
Clasificación