Sobes.tech
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.