Sobes.tech
Junior

C# da chiqindi yig'uvchi nima?

sobes.tech AI

AIdan javob

C# da trash to'plovchi avtomatlashtirilgan xotira boshqarish jarayonidir. U ilovadan foydalanilmayotgan ob'ektlar tomonidan egallangan xotirani ozod qiladi.

Asosiy jihatlar:

  • Avtomatik boshqaruv: Dasturchi ko'p hollarda ob'ektlar uchun xotirani qo'lda ajratish yoki bo'shatishiga hojat yo'q. CLR (Common Language Runtime) buni avtomatik qiladi.
  • Havolalar kuzatuvi: Trash to'plovchi, qaysi ob'ektlar ildiz manbalardan (masalan, oqimlar stacklari, statik maydonlar) kirish mumkinligini aniqlaydi. Bu manbalardan havolasi bo'lmagan ob'ektlar etiborsiz deb hisoblanadi va yig'iladi.
  • Avlodlar: Heap (xotira) 0, 1 va 2 avlodlarga bo'lingan. Yig'ishdan keyin "qolgan" ob'ektlar yuqori avlodlarga o'tkaziladi. Bu jarayonni optimallashtiradi, chunki ko'p ob'ektlar qisqa umrli bo'ladi.
  • Finalizatsiya: Ob'ektlar Finalize metodiga ega bo'lishi mumkin, uni trash to'plovchi xotira bo'shatishdan oldin chaqiradi. Bu boshqarilmaydigan resurslarni tozalash uchun ishlatiladi, ammo uning ishlash vaqti noaniq bo'lgani uchun cheklangan.
  • Kompaktsiya: Yig'ishdan so'ng, trash to'plovchi qolgan ob'ektlarni harakatlantirishi mumkin, xotira bo'laklanishini kamaytirish uchun.
// Boshqariladigan xotirada ob'ekt yaratish misoli
MyClass obj = new MyClass();
// Ob'ektga endi havola bo'lmasa, trash to'plovchi xotirani bo'shatishi mumkin

// IDisposable va using yordamida boshqarilmaydigan resurslarni qo'lda bo'shatish misoli
// Finalize o'rniga tavsiya etilgan yondashuv
using (var resource = new UnmanagedResourceWrapper())
{
    // Resursdan foydalanish
} // Bu yerda resource.Dispose() chaqiriladi, boshqarilmaydigan resurs tozalanadi