Junior
C# da axirgi tozalash (Garbage Collector) nima?
sobes.tech AI
AIdan javob
Avtomatik xotira boshqaruv mexanizmi, u ob'ektlarga bo'shagan xotirani ozod qiladi, ularga endi murojaat qilinmaydi. Bu xotira oqib ketishining oldini oladi va dasturlash jarayonini soddalashtiradi.
Xotira tozalovchi mexanizmi prinsiplari:
- Ob'ektlarni kuzatish: Asosiy tugunlardan (statik maydonlar, stackdagi mahalliy o'zgaruvchilar) hali ham kirish mumkin bo'lgan ob'ektlarni aniqlash.
- Xotira tozalash: Agar ob'ektga murojaat qiluvchi hech qanday manba bo'lmasa, tozalovchi uni o'chirish uchun belgilaydi.
- Xotirani bo'shatish: O'chirilgan ob'ektlar tomonidan egallangan xotirani bo'shatadi va qolgan xotirani siqib, bo'laklanishni kamaytiradi.
Ob'ektlarning avlodlari:
- 0-avlod: Yaqinda yaratilgan va qisqa umrli ob'ektlarni o'z ichiga oladi. To'plash tez-tez amalga oshiriladi.
- 1-avlod: 0-avlod to'plashidan o'tgan ob'ektlarni o'z ichiga oladi. To'plash kamroq amalga oshiriladi.
- 2-avlod: Uzun umrli ob'ektlarni o'z ichiga oladi. To'plash kamdan-kam amalga oshiriladi.
Majburiy GC chaqiruvi (kamdan-kam va ehtiyotkorlik bilan ishlatiladi):
// Majburiy xotira tozalash chaqiruvi
System.GC.Collect();
// Finalizatorlar yakunlanishini kutish
System.GC.WaitForPendingFinalizers();
.NETda asosiy xotira tozalash mexanizmi belgilash va siqish algoritmidir.