jvm recolector de basura (G1)


jvm recolector de basura (G1)

 

***************************

g1 Introducción

 

      

El recolector de basura g1 realiza la recolección de basura en toda la memoria de almacenamiento dinámico, divide la memoria de almacenamiento dinámico en varias regiones, conserva el concepto de la nueva generación y la generación anterior, y tiene las siguientes características:

Paralelismo: durante la recolección de basura, puede haber múltiples subprocesos de basura ejecutándose al mismo tiempo, mejorando la eficiencia de la recolección

Concurrencia: durante la recolección de basura, puede funcionar simultáneamente con hilos de usuario

Clasificación del espacio: durante la recolección de basura g1, los objetos se moverán para evitar desechos espaciales

Previsibilidad: g1 reclamará preferentemente regiones con mayor memoria, y no reclamará todas las regiones, reduciendo el tiempo de pausa de recolección de basura

 

 

***************************

Proceso de recolección de basura: recolección de basura de nueva generación, ciclo de marcado concurrente, recolección mixta, gc completo

 

********************

Recolección de basura de nueva generación.

 

      

La nueva generación de recolección de basura recicla principalmente eden y sobrevivientes;

Antes y después de la recolección de basura, el área del eden se vacía , y parte del espacio también se recuperará en el área sobreviviente ;

Dado que la nueva generación de objetos puede ingresar al área de ancianos, el área de ancianos puede aumentar

 

********************

Ciclo de marca concurrente

 

      

Marcado inicial: marque los objetos directamente accesibles desde el nodo raíz, antes de que el marcado inicial desencadene una nueva generación de recolección de basura, el hilo del usuario deja de ejecutarse durante el marcado inicial

Exploración del área raíz: marque los objetos de la generación anterior a los que se puede acceder directamente en el área sobreviviente. Dado que la generación joven gc cambiará al sobreviviente, la generación joven gc se detiene en esta etapa, pero el hilo del usuario puede funcionar normalmente

Marcado concurrente: escanee todo el montón de objetos supervivientes y márquelos. En este momento, se puede realizar gc de generación joven y los hilos de usuario pueden funcionar normalmente.

Remarcado: debido a que el subproceso de usuario puede ejecutarse durante la fase de marcado concurrente, el remarcado modifica el resultado del marcado, crea una instantánea antes del remarcado y acelera el proceso de remarcado, momento en el cual el hilo del usuario se detiene

Limpieza previa exclusiva: clasifique y marque cada área de acuerdo con el tamaño del espacio reciclable para reciclar en la fase de recuperación mixta, momento en el que el hilo del usuario se detiene

Limpieza concurrente: Recupere áreas donde no hay objetos sobrevivientes (si hay objetos sobrevivientes, no se recolectan, la mayoría de ellos se recolectan en la fase de recuperación mixta)

 

      

Área de eden: el gc de la generación joven se realiza antes de la marca inicial, se vacía el eden, ya que el hilo del usuario puede funcionar durante la recuperación, después del ciclo de marca concurrente, el área de eden se seguirá utilizando;

Área G: el área recuperada en la fase de recuperación mixta

 

********************

Etapa de recuperación mixta

 

      

El ciclo de marcado concurrente recuperará parte del espacio, y la mayor parte del trabajo de recolección de basura se llevará a cabo en la etapa de recolección mixta;

El reciclaje mixto no necesariamente recicla todas las áreas marcadas como g, solo las pocas áreas con la mayor memoria pueden reciclarse primero

Los objetos vivos se moverán a otros espacios, reduciendo los desechos espaciales.

 

            

El reciclaje mixto se realizará varias veces hasta que se recupere suficiente espacio de memoria y luego se active un nuevo ciclo de marcado concurrente gc de generación joven

 

********************

gc completo

 

Condición de activación: si la nueva generación se recicla, el sobreviviente y la generación anterior no pueden almacenar los objetos sobrevivientes; la etapa de reciclaje mixto no puede recuperar suficiente espacio de memoria

 

 

***************************

Parámetros relacionados

 

-XX: + UseG1GC: use el recolector de basura g1

-XX: MaxGCPauseMillis = valor: el tiempo máximo para que gc haga una pausa

-XX: ParallelGCThreads = valor: número de hilos de recolección de basura

-XX: InitiatingHeapOccupancyPercent = value: cuando el uso del montón alcanza el valor establecido, se activa el ciclo de marcado concurrente. Si el valor es demasiado grande, causará gc completo, y si es demasiado pequeño, el ciclo de marcado concurrente se activará con frecuencia.

 

 

387 artículos originales publicados · Me gusta 98 · Visitas 30,000+

Supongo que te gusta

Origin blog.csdn.net/weixin_43931625/article/details/105090300
Recomendado
Clasificación