Sobes.tech
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:

  1. Ob'ektlarni kuzatish: Asosiy tugunlardan (statik maydonlar, stackdagi mahalliy o'zgaruvchilar) hali ham kirish mumkin bo'lgan ob'ektlarni aniqlash.
  2. Xotira tozalash: Agar ob'ektga murojaat qiluvchi hech qanday manba bo'lmasa, tozalovchi uni o'chirish uchun belgilaydi.
  3. 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.