Junior
Kas yra šiukšlių surinkėjas (Garbage Collector)?
sobes.tech AI
Atsakymas iš AI
Automatinė atminties valdymo sistema, kuri laisvina nenaudojamus objektus krūvoje.
Veikimo principai:
- Objektų pasiekiamumo nustatymas: Stebi gyvus (pasiekiamus) objektus, kurie nurodomi iš šaknų (pvz., siūlų steko).
- Nepasiekiamų objektų laisvinimas: Objektai be nuorodų laikomi "šiukšle" ir jų atmintis gali būti pakartotinai naudojama.
Šiukšlių surinkėjų tipai (priklauso nuo kalbos/platformos):
- Mark and Sweep: Pažymi pasiekiamus objektus (žymėjimas), tada pereina per krūvą ir laisvina nepažymėtus (valymas). Gali sukelti atminties fragmentaciją.
- Copying: Padalija krūvą į dvi dalis. Kopijuoja gyvus objektus į naują dalį, tada valo senąją. Užkerta kelią fragmentacijai, bet reikalauja daugiau atminties.
- Generational: Objektus skirsto pagal amžių į kartas. Dažniau renka šiukšles "jaunoje" kartoje, kur dauguma objektų gyvena trumpai.
Privalumai:
- Sumažina atminties nutekėjimo tikimybę.
- Supaprastina kūrimą (nereikia aiškiai laisvinti atminties).
Trūkumai:
- Gali sukelti vėlavimus (pauzes) proceso metu.
- Surinkimo laikas yra nenuspėjamas.