Obsah:
Definícia - Čo znamená Garbage Collection (GC)?
Zber odpadu (GC) je dynamický prístup k automatickej správe pamäte a prideľovaniu haldy, ktorý spracúva a identifikuje bloky mŕtvej pamäte a opätovne pridelí úložisko na opätovné použitie. Hlavným účelom zberu odpadu je zníženie úniku pamäte.
Implementácia GC si vyžaduje tri primárne prístupy:
- Mark-and-sweep - Počas procesu, keď sa vyčerpá pamäť, vyhľadá GC všetku dostupnú pamäť a potom získa späť dostupnú pamäť.
- Počítanie referencií - Pridelené objekty obsahujú referenčný počet referenčných čísel. Ak je počet pamäti nula, je objekt odpadom a potom je zničený. Uvoľnená pamäť sa vráti do haldy pamäte.
- Zbierka kópií - Existujú dva oddiely pamäte. Ak je prvý oddiel plný, lokalizuje GC všetky prístupné dátové štruktúry a skopíruje ich do druhého oddielu, čím zhutní pamäť po procese GC a umožní nepretržitú voľnú pamäť.
Niektoré programovacie jazyky a platformy so vstavaným GC (napr. Java, Lisp, C # a .Net) samospúšťajú úniky pamäte, čo umožňuje efektívnejšie programovanie.
Techopedia vysvetľuje Garbage Collection (GC)
Dynamický prístup k zberu odpadu k automatickému prideľovaniu haldy rieši bežné a nákladné chyby, ktoré v prípade nezistenia často vedú k programovým chybám v skutočnom svete.
Pretože je ťažké ich identifikovať a opraviť, chyby pri prideľovaní sú nákladné. Zber odpadu je preto mnohými považovaný za podstatnú jazykovú funkciu, ktorá uľahčuje prácu programátora pri nižšom manuálnom prideľovaní haldy. GC však nie je dokonalý a mali by sa zvážiť nasledujúce nevýhody:
- Pri uvoľňovaní pamäte GC spotrebúva výpočtové zdroje.
- Proces GC je nepredvídateľný, čo má za následok oneskorenie rozptýlených relácií.
- Ak nepoužívané odkazy na objekty nie sú manuálne zlikvidované, GC spôsobuje logické úniky pamäte.
- GC nie vždy vie, kedy spracovať v prostrediach virtuálnej pamäte moderných stolových počítačov.
- Proces GC zle interaguje so systémami vyrovnávacej pamäte a virtuálnej pamäte, čo má za následok problémy s ladením výkonu.