Junior — Middle
Millised mälupuhangud võivad dünaamilise mälu haldamisel tekkida?
sobes.tech AI
Vastus AI-lt
Dünaamilise mälu haldamisel võivad tekkida järgmised mälu lekked:
- Unustatud viidete tõttu lekked: objektid jäävad mällu, kuna nendele on endiselt viited, kuigi nad pole enam vajalikud.
- Tsüklilised viited: objektid viitavad üksteisele, ja prügikogu ei saa neid vabastada, kui ta ei toeta tsüklite tuvastamist.
- Vabastamata unmanaged ressursid: kui C#-s kasutatakse unmanaged ressursse (näiteks kirjeldajaid, faile) ning neid ei vabastata selgelt
Disposevõi finaliseerijate kaudu.
Näide tsüklist tingitud lekkest:
class Node {
public Node Next;
}
Node a = new Node();
Node b = new Node();
a.Next = b;
b.Next = a; // tsükkel
// Kui prügikogu ei toeta tsüklite tuvastamist, ei vabastata objekte
Lekete vältimiseks on oluline õigesti hallata viiteid ja vabastada unmanaged ressursid.