coleta de lixo .net C#

Analogia:
vai pegar a placa sozinha = pedir memória,
colocar no resíduo após o uso = liberar manualmente
a tia para reciclar = reciclagem automática (por exemplo, tem muito lixo, novos clientes chegam)
chamar a tia para reciclar = chamar manualmente reciclagem automática

Uma função central do CLR - coleta de lixo
O objetivo da coleta de lixo: melhorar a utilização da memória
O coletor de lixo apenas recupera recursos de memória no heap gerenciado e não recicla outros recursos (conexões de banco de dados, manipuladores de arquivos, portas de rede)
.
(1) Uma variável sem uma referência de variável indica que ela pode ser reciclada
Quando reciclar
(1) Não tenho certeza, quando o programa precisa de nova memória, ele começa a reciclar
(2) GC.Collect() chama manualmente a reciclagem. Não recomendado, a coleta de lixo será interrompida por um tempo (muito brevemente)
O conceito de "geração" no coletor de lixo:
(1) Um total de 3 gerações: geração 0, geração 1, geração 2
GC.Collect(0);/ /Reciclar a 0ª geração
(2) A frequência de reciclagem de cada geração: a 0ª geração é a mais alta, seguida da 1ª geração e depois a 2ª geração. Ou seja, quanto mais antigo o objeto, maior a probabilidade de sobrevivência.
A 0ª geração, a 1ª geração e a 2ª geração especificam um espaço de tamanho fixo.
Ao criar um objeto, ele é colocado na geração anterior (0ª geração ) por padrão. Comece a preparar a coleta de lixo.
Alguns objetos na 0ª geração não podem ser liberados porque ainda possuem referências, então são colocados nos descendentes (1ª geração). Neste momento, não há nada na geração 0. Neste momento, quando o novo objeto for colocado, ele ainda entrará na 0ª geração. Se a 0ª geração estiver cheia novamente, a 0ª geração será coletada. Se a 1ª geração estiver cheia posteriormente, a 1ª geração será reciclada ... Aqueles que sobreviveram foram colocados na segunda geração. Se a segunda geração estiver cheia e todos estiverem vivos depois, então neste momento, porque a primeira geração está cheia, ainda há alguns que não podem ser liberados e precisam ser colocados na segunda geração porque o espaço da segunda geração é cheio e não pode ser inserido. Neste momento, cada geração começará a tentar expandir a capacidade.
Se a capacidade não puder ser expandida no final, o mecanismo de coleta de lixo na rede lançará uma exceção : mark-and-compact (marcar e compactar). No início, assume-se que todos os objetos são lixo
. O que devo fazer com outros recursos, exceto recursos de memória? ou descartar

Acho que você gosta

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