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:
- Objektide jälgimine: Määrab objektid, mis on endiselt kättesaadavad juurkettidest (statilised väljad, lokaalsed muutujad virnas).
- ** Prügi kogumine:** Kui objekti viiteid ei ole, märgistab kogujas selle eemaldamiseks.
- 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.