Recolección de basura .NET C#

Analogía:
ir a buscar el plato usted mismo = solicitar la memoria,
ponerlo en el residuo después de su uso = liberar manualmente
a la tía para que recicle = reciclaje automático (por ejemplo, hay demasiada basura, vienen nuevos clientes)
llamar a la tía para que recicle = llamar manualmente reciclaje automático

Una función central de CLR: recolección de elementos no utilizados
El propósito de la recolección de elementos no utilizados: mejorar la utilización de la memoria
El recolector de elementos no utilizados solo reclama recursos de memoria en el montón administrado y no recicla otros recursos (conexiones de base de datos, identificadores de archivos, puertos de red)
.
(1) Una variable sin una referencia de variable indica que se puede reciclar
Cuándo reciclar
(1) No estoy seguro, cuando el programa necesita nueva memoria, comienza a reciclar
(2) GC.Collect() llama manualmente al reciclaje. No recomendado, la recolección de basura se detendrá por un tiempo (muy brevemente)
El concepto de "generación" en el recolector de basura:
(1) Un total de 3 generaciones: generación 0, generación 1, generación 2
GC.Collect(0);/ /Reciclar la 0ª generación
(2) La frecuencia de reciclaje de cada generación: la 0ª generación es la más alta, seguida de la 1ª generación y luego la 2ª generación. Es decir, cuanto más antiguo es el objeto, mayor es la probabilidad de supervivencia.
La 0ª generación, la 1ª generación y la 2ª generación especifican un espacio de tamaño fijo.
Al crear un objeto, se coloca en la generación anterior (0ª generación ) por defecto. Comenzar a prepararse para la recolección de basura.
Algunos objetos en la generación 0 no se pueden liberar porque todavía tienen referencias, por lo que se colocan en los descendientes (generación 1). En este momento, no hay nada en la generación 0. En este momento, cuando se coloca el nuevo objeto, aún ingresará a la generación 0. Si la generación 0 está llena nuevamente, la generación 0 se recolectará como basura. Si la generación 1 se llena más tarde, la generación 1 se reciclará Los que sobrevivieron fueron puestos en la segunda generación. Si la segunda generación está llena y todos están vivos más tarde, entonces en este momento, debido a que la primera generación está llena, todavía hay algunos que no se pueden liberar y deben colocarse en la segunda generación porque el espacio de la segunda generación es lleno y no se puede ingresar. En este momento, cada generación comenzará a intentar ampliar la capacidad.
Si al final no se puede expandir la capacidad, el mecanismo de recolección de basura en la red arroja una excepción : marcar y compactar (marcar y compactar). Al principio, se supone que todos los objetos son basura
. ¿Qué debo hacer con otros? recursos excepto los recursos de memoria? o desechar

Supongo que te gusta

Origin blog.csdn.net/weixin_44806700/article/details/123429697
Recomendado
Clasificación