JavaScript-də tullantı toplayıcısı necə işləyir?
sobes.tech Süni İntellekt
AI-dan cavab
JavaScript-də tullantıların to‘plovchi avtomatik ravishda ishlaydi, erishish mumkin bo‘lgan ildizlardan (globally ob'ekt, joriy funktsiya chaqiruvi va boshqalar) endi mavjud bo‘lmagan ob'ektlarni aniqlaydi va ularning egallagan xotirasini bo‘shatadi.
Asosiy mexanizmlar:
- Havola hisoblagichi: Eskirgan usul bo‘lib, ob'ektga bo‘lgan havolalar sonini hisoblaydi. Hisoblagich nolga teng bo‘lsa, xotira bo‘shatiladi. Kamchilik: siklik havolalarni boshqara olmaydi.
- Belgilash va tozalash: Zamonaviy va keng tarqalgan usul.
- Belgilash: ildizlardan boshlab, chiqindi yig'uvchi ob'ektlar grafigini rekursiv tarzda yurib, barcha mavjud ob'ektlarni belgilaydi.
- Tozalash: Xotira bo'shagan holda, belgilangan ob'ektlar bo'lmagan barcha ob'ektlarni o'chiradi.
"Belgilash va tozalash" usulining "Havola hisoblagich"ga nisbatan afzalligi, u siklik havolalarni to'g'ri boshqaradi.
JavaScript dvigateli (masalan, Chrome'dagi V8) doimiy ravishda xotira foydalanishini nazorat qiladi va zarur bo'lsa, chiqindi yig'uvchini ishga tushiradi. Dasturchi bu jarayonni to'g'ridan-to'g'ri boshqara olmaydi, lekin ortiqcha havolalarni oldini olish va murakkab ob'ektlarning hayot aylanishini boshqarish orqali bilvosita ta'sir qilishi mumkin.