Junior — Middle
Que tipos de vazamentos de memória podem ocorrer na gestão de memória dinâmica?
sobes.tech IA
Resposta da IA
Na gestão de memória dinâmica podem ocorrer os seguintes tipos de fugas de memória:
- Fuga devido a referências esquecidas: objetos permanecem na memória porque ainda há referências a eles, embora já não sejam necessários.
- Referências cíclicas: objetos referenciam-se mutuamente, e o coletor de lixo não consegue libertá-los se não suportar a deteção de ciclos.
- Recursos unmanaged não libertados: se em C# forem utilizados recursos unmanaged (por exemplo, descritores, ficheiros), e estes não forem libertados explicitamente através de
Disposeou finalizadores.
Exemplo de fuga devido a um ciclo:
class Node {
public Node Next;
}
Node a = new Node();
Node b = new Node();
a.Next = b;
b.Next = a; // ciclo
// Se o coletor de lixo não suportar a deteção de ciclos, os objetos não serão libertados
Para evitar fugas, é importante gerir corretamente as referências e libertar os recursos unmanaged.