La recolección de basura (Garbage Collection), adopta la idea del algoritmo de recolección generacional, con frecuencia recolecta la generación joven, menos recolecta la generación anterior, básicamente no mueve la generación permanente.
Según el área de reciclaje, se divide en dos tipos, uno para el Gc menor de la generación joven y el otro para el Gc mayor de la generación anterior que ocasionalmente se acompaña de la nueva generación.
La basura se refiere al espacio en memoria que ya no se usa, como el espacio de memoria de almacenamiento dinámico al que no apunta ningún objeto de referencia de pila.
Clasificación de los residuos:
⑴ referencia fuerte (StrongReference) [] no es spam: 常见的普通对象引用,就算出现了OOM也不会对该对象进行回收
.
⑵ referencias blandos (SoftReference) [basura] pueden ser: 需要SoftReference类实现,内存空间不足了,垃圾回收器就会回收它
.
⑶ referencia débil (WeakReference) 需要WeakReference类实现,只要GC,对象就被回收
[basura]: .
⑷ de referencia virtual 虚引用主要用来跟踪对象被垃圾回收器回收的活动
(PhantomReference): .
conteo ⑴ Referencia: 存在“循环依赖”问题,弃用
;
⑵ método de análisis de alcanzabilidad raíz enumeración hacer: 通过一些被称为垃圾回收根(GC Roots)的对象作为起点,从这些节点开始向下搜索,搜索走过的路径被称为引用链(Reference Chain),当一个对象到 GC Roots 没有任何引用链相连时(即从 GC Roots 节点到该节点不可达),则证明该对象是不可用的
;
Raíz 是一组必须活跃的引用
GC: .
Los objetos que pueden usarse como GC Root incluyen los siguientes 4 tipos:
① 栈(栈帧中的本地变量表)中引用的对象
;
② 方法区中类静态属性引用的对象
;
③ 方法区中常量引用的对象
;
④ 本地方法栈中 JNI(即一般说的 Native 方法)引用的对象
;
GC menor: el área de Eden está llena o el tamaño del objeto recién creado es mayor que el espacio restante de Eden;
GC mayor: espacio insuficiente en la generación anterior, espacio insuficiente en la generación permanente, falla de promoción en gc menor, llamada a la pantalla System.gc ();
Nota:
El fracaso de la promoción es que durante el proceso de GC menor, el espacio restante del sobreviviente no es suficiente para acomodar el eden y los objetos del sobreviviente actualmente en uso. Solo los objetos que no pueden acomodarse pueden moverse a la generación anterior (promoción). Cuando está lleno, no puede acomodar más objetos, generalmente acompañado de un gc completo, lo que conduce al fracaso de la promoción. Esta situación generalmente necesita aumentar el tamaño de la generación joven e intentar que los objetos de la nueva generación se limpien tanto como sea posible durante la generación joven.
Copiar algoritmo (el algoritmo utilizado por Minor GC):
A partir de la raíz del GC, encuentre los objetos supervivientes de las áreas Eden y From a través de Tracing y cópielos en el área To. Una vez que se completa el GC, From y To intercambian identidades y la siguiente asignación de memoria comienza desde el área To. Cada vez que un objeto sobreviviente se somete a un GC menor, la edad aumentará en 1, y cuando alcance un cierto umbral (el valor predeterminado es 15, se puede configurar a través de -XX: MaxTenuringThreadshold), se convertirá en un objeto de vejez.
Mark-sweep (algoritmo utilizado por Major GC):
Cuando se agota el espacio disponible en el montón, se suspenderá todo el programa (detener el mundo) para marcarlo y limpiarlo.
Marca: comience a escanear desde la raíz del GC, marque los objetos supervivientes (objetos accesibles de la raíz del GC);
borre: recorra todo el montón, borre los objetos no marcados;
Mark-Compression (algoritmo utilizado por Major GC):
Marca: comience a escanear desde la raíz del GC, marque los objetos supervivientes (objetos accesibles de la raíz del GC);
compresión: atraviese todo el montón, mueva los objetos marcados a un extremo y limpie directamente la memoria más allá del límite;
Mark-Sweep-Compression (algoritmo utilizado por Major GC):
- La combinación de Mark-Swap y Mark-Compact;
- De acuerdo con Mark-Swap, respete después de múltiples GC;
Pequeño resumen:
La generación menor Minor GC utiliza un algoritmo de copia, la
generación anterior Major GC utiliza un algoritmo mark-sweep y mark-sweep-compress;
Eficiencia de la memoria: algoritmo de copia> borrado de marca> compresión de marca;
uniformidad de la memoria: algoritmo de copia = compresión de marca> borrado de marca;
tasa de utilización de la memoria: borrado de marca = compresión de marca> algoritmo de copia;
Enlace de referencia:
https://www.cnblogs.com/Mufasa/p/11226913.html