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
Finalizemetodiga 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