Sobes.tech
Junior

Mis on prügikoristaja (Garbage Collector) C#-s?

sobes.tech AI

Vastus AI-lt

Automaatne mälu haldamise mehhanism, mis vabastab mälu, mida on hõivanud objektid, millele enam viiteid ei ole. See ennetab mälulekke ja lihtsustab arendusprotsessi.

Kogujasüsteemi tööpõhimõtted:

  1. Objektide jälgimine: Määrab objektid, mis on endiselt kättesaadavad juurkettidest (statilised väljad, lokaalsed muutujad virnas).
  2. ** Prügi kogumine:** Kui objekti viiteid ei ole, märgistab kogujas selle eemaldamiseks.
  3. Mälu vabastamine: Vabastab mälu, mida hõivavad kustutatud objektid, ja tihendab ülejäänud mälu, et vähendada fragmentatsiooni.

Objektide põlvkonnad:

  • 0. põlvkond: Sisaldab hiljuti loodud ja lühiajalisi objekte. Kogumine toimub sageli.
  • 1. põlvkond: Sisaldab objekte, mis on üle elanud 0. põlvkonna kogumise. Kogumine toimub harvem.
  • 2. põlvkond: Sisaldab pikaajalisi objekte. Kogumine toimub harva.

Sunni GC-kutse (harva ja ettevaatusega):

// Sunni kogumise kutse
System.GC.Collect();
// Ootab finaliseerijate lõpetamist
System.GC.WaitForPendingFinalizers();

.NET-i peamine mälu kogumise mehhanism on märgistamise ja tihendamise algoritm.