1. Introducción al algoritmo GC

como identificar la basura

1. Algoritmo de conteo de referencias (consulte: https://mp.csdn.net/mp_blog/creation/editor/119833432 )

2. Análisis de accesibilidad

Para resolver el problema de la referencia circular del método de conteo de referencia, se busca una serie de objetos "RAÍCES GC" como superpuntos. Si no hay una ruta accesible entre "GC ROOTS" y un objeto, se considera inalcanzable para usted. Cabe señalar que los objetos inalcanzables no son equivalentes a los objetos reciclables, y los objetos inalcanzables deben pasar por al menos dos procesos de marcado para convertirse en objetos reciclables. Si sigue siendo un objeto reciclable después de dos marcas, se enfrentará al reciclaje.

algoritmo de recolección de basura

1. Eliminación de marcas

2. copiar

3. Marcado y acabado

4. Colección generacional

1) Marcar y borrar: el algoritmo de recolección de basura más básico se divide en dos etapas, marcar y borrar. La fase de marcado marca todos los objetos que deben recuperarse y la fase de limpieza recupera el espacio ocupado por los objetos marcados. como se muestra en la imagen

Desventajas: A partir de la figura, podemos ver que el mayor problema de este algoritmo es que la fragmentación de la memoria es grave y puede haber un problema de que los objetos grandes no puedan encontrar espacio disponible en el futuro.

 2) Replicación: Un algoritmo propuesto para solucionar el defecto de fragmentación de memoria del algoritmo Mark-Sweep. Divide la memoria en dos bloques de igual tamaño según la capacidad de la memoria. Solo use uno de ellos cada vez. Cuando esta memoria esté llena, copie los objetos sobrevivientes a otro y borre la memoria usada, como se muestra en la figura:

 

Desventajas: aunque este algoritmo es simple de implementar, tiene una alta eficiencia de memoria y no es propenso a la fragmentación, el mayor problema es que la memoria disponible se comprime a la mitad de la original. Y si aumenta la cantidad de objetos supervivientes, la eficiencia del algoritmo de copia se reducirá considerablemente.

3) Algoritmo Mark-Compact (Mark-Compact): Combinando los dos algoritmos anteriores, se propone con el fin de evitar defectos. La fase de marcado es la misma que la del algoritmo Mark-Sweep.Después del marcado, los objetos no se limpian, pero los objetos supervivientes se mueven a un extremo de la memoria. A continuación, se borra el objeto JDX que se encuentra fuera del límite final. Como se muestra en la imagen:

4) Algoritmo de recopilación generacional: es el método adoptado por la mayoría de las JVM en la actualidad. Su idea central es dividir la memoria en diferentes dominios de acuerdo con los diferentes ciclos de vida de los objetos. Generalmente, el montón GC se divide en la generación anterior (Tenured /Vieja Generación) y la Generación Joven. La característica de la generación anterior es que solo se necesita reciclar una pequeña cantidad de objetos cada vez que se realiza la recolección de basura. La característica de la nueva generación es que se debe reciclar una gran cantidad de basura cada vez que se realiza la recolección de basura. Por lo tanto, , se pueden seleccionar diferentes algoritmos según las diferentes regiones.

4.1) Algoritmo de Nueva Generación y Replicación

 

En la actualidad, el GC de la mayoría de las JVM adopta el algoritmo de copia (Copying) para la nueva generación, y el GC se denomina gc menor, porque la mayoría de los objetos se recuperan para cada recolección de basura en la nueva generación, es decir, hay menos operaciones a copiar. Por lo general, se distribuye de acuerdo con la proporción del edén, de sobreviviente a sobreviviente (8:1:1). Cada vez que use el espacio Eden y uno de los espacios de Superviviente, al reciclar, copie los objetos supervivientes en los dos espacios a otro espacio de Superviviente.

4.2) Algoritmo de copia de marca y generación antigua

Teniendo en cuenta el gran uso de memoria, la generación anterior recupera una pequeña cantidad de objetos cada vez, por lo que se adopta el algoritmo de clasificación por marcas.

4.3) Diagrama

 

 

 

 

 

 

 

 Explicación: En cada GC Menor, la edad de supervivencia del objeto sobreviviente será +1, y generalmente cuando llegue a 15 veces, pasará a la generación anterior.

Supongo que te gusta

Origin blog.csdn.net/lzzyok/article/details/121323377
Recomendado
Clasificación