Sobes.tech
Junior

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.
    1. Belgilash: ildizlardan boshlab, chiqindi yig'uvchi ob'ektlar grafigini rekursiv tarzda yurib, barcha mavjud ob'ektlarni belgilaydi.
    2. 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.