Middle
Qadoqlash yig'uvchi nima va u qanday ishlaydi?
sobes.tech AI
AIdan javob
Chiqindon tozalovchi (Garbage Collector, GC) — bu avtomatik xotira boshqarish mexanizmi bo‘lib, u dastur tomonidan endi ishlatilmaydigan xotirani ajratadi va bo‘shatadi.
Ishlash prinsipi:
- Xotira ajratish: Dastur ob'ektlar yaratganda, chiqindixonchi ularni yirik (heap) ichida joylashtiradi.
- Erishish mumkinligini aniqlash: Chiqindixonchi, ob'ektlarning dasturdagi "ildiz" (root)lardan qanchalik erishilishini aniqlaydi. Ildizlar, hozir bajarilayotgan funksiyalardagi lokal o'zgaruvchilar, statik o'zgaruvchilar, iplar (threads)dan keladigan havolalar bo‘lishi mumkin.
- Chiqindilarni tozalash: Ildizlardan erishilmaydigan ob'ektlar "chiquvchi" deb hisoblanadi va ularning xotirasi bo‘shatilishi mumkin.
Turli chiqindilarni tozalash algoritmlari mavjud, masalan:
- Belgilash va tozalash (Mark-and-Sweep): Chiqindixonchi, ildizlardan erishiladigan ob'ektlar grafigini yurib, ularni belgilaydi. Keyin, butun yirikni yurib, belgilangan ob'ektlarning xotirasini bo'shatadi.
- Ko‘chirish: Yirik ikki qismga bo‘linadi. Erishiladigan ob'ektlar bir qismdan ikkinchisiga ko‘chiriladi, eski qism tozalanadi.
- Avlodli (Generational): Ob'ektlar avlodlarga bo‘linadi. Yangi ob'ektlar yosh avlodga, eski ob'ektlar esa yetuk avlodga joylashtiriladi. Chiqindilarni tozalash, odatda, yosh avlodda ko‘proq amalga oshiriladi, chunki ko‘pchilik ob'ektlarning umr ko‘rish muddati qisqa.
Java'da ishlash misoli (soddalashtirilgan):
// Dastur yirikda ob'ektlar yaratadi
Object obj1 = new Object();
Object obj2 = new Object();
// obj1 endi erishilmaydi
obj1 = null;
// Chiqindixonchi, obj1 tomonidan band qilingan xotirani bo‘shatishi mumkin