Sobes.tech
Junior

Kuidas töötab prügikorjaja JavaScriptis?

sobes.tech AI

Vastus AI-lt

JavaScriptis töötab automaatselt prügikogu, tuvastades objektid, mis enam ei ole kättesaadavad kättesaadavate juurdepääsude (globaalne objekt, praegune funktsiooni kutsumine jne) kaudu, ning vabastades nende kasutatud mälu.

Peamised mehhanismid:

  • Viidete loendur: Vanem meetod, mis loeb objekti viidete arvu. Mälu vabastatakse, kui loendur jõuab nulli. Puudus: ei saa töödelda tsüklilisi viiteid.
  • Märkimine ja puhastamine: Kaasaegne ja kõige levinum meetod.
    1. Märkimine: Alustades juurtest, läbib prügikoguja rekursiivselt objektide graafi ja märgib kõik kättesaadavad objektid.
    2. Puhastamine: Läbib mälu ja eemaldab kõik märgistamata objektid.

"Märkimise ja puhastamise" eelised võrreldes "Viidete loenduriga" on see, et see õigesti käsitleb tsüklilisi viiteid.

JavaScripti mootor (näiteks V8 Chrome'is) jälgib pidevalt mälu kasutust ja käivitab vajadusel prügikoguja. Arendaja ei saa seda protsessi otseselt kontrollida, kuid saab sellele kaudselt mõjutada, vältides tarbetuid viiteid ja hallates keeruliste objektide elutsüklit.