Sobes.tech
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 Dispose võ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.