Middle
Kādas ir atkritumu savācēja (Garbage Collector) īpatnības?
sobes.tech AI
Atbilde no AI
Galvenās atkritumu savācēja (Garbage Collector) iezīmes:
- Automatizēta atmiņas pārvaldība: Atbrīvo izstrādātāju no manuālas atmiņas piešķiršanas/un atbrīvošanas, samazinot kļūdu, piemēram, "atmiņas noplūdes" vai "kritušo norādītāju" risks.
- Mirušo objektu noteikšana: Izmanto algoritmus, lai identificētu objektus, kas vairs netiek izmantoti (nav pieejami no saknes saistībām).
- Dažādi savākšanas algoritmi:
- Marķēšana un izsūknēšana: Marķē izmantotos objektus (Marķēšana), pēc tam izņem neizmantotos (Izsūknēšana). Var novest pie atmiņas fragmentācijas.
- Kopēšana: Sadala atmiņu divās telpās. Pārvieto dzīvos objektus no aktīvās telpas uz neaktīvo, pēc tam iztīra visu aktīvo. Efektīvs, ja ir daudz "mirušo" objektu, bet prasa vairāk atmiņas.
- Marķēšana un sakopšana: Marķē izmantotos objektus (Marķēšana), pēc tam pārvieto tos uz kastes sākumu (Sakopšana), atbrīvojot nepārtrauktu atmiņas bloku. Novērš fragmentāciju.
- Ģenerācijas: Sadala kasti pa paaudzēm (Jaunā, Vecā). Biežāk savāc atkritumus "jaunajā" paaudzē, kur objekti dzīvo īsāku laiku. Efektīvi samazina slodzi.
- Pārtraukšanas pasākumi (Stop-the-World, STW): Daži savākšanas algoritmi prasa programmas izpildes pārtraukšanu, kas var radīt aizkaves. Mūsdienu GC cenšas maksimāli samazināt šos pārtraukumus (piemēram, G1, ZGC).
- Neprognozējama savākšanas brīža: Parasti izstrādātājs nevar tieši kontrolēt, kad notiks atkritumu savākšana, lai gan var ietekmēt to netieši.
- Veiktspējas slodze: Pašas atkritumu savākšanas darbības patērē CPU un RAM resursus. Algoritma izvēle un GC konfigurācija ietekmē lietojumprogrammas veiktspēju.