Kazalo:
Opredelitev - Kaj pomeni zbiranje smeti (GC)?
Zbiranje smeti (GC) je dinamičen pristop k samodejnemu upravljanju pomnilnika in razporeditvi heap, ki obdeluje in prepozna mrtve pomnilniške bloke ter prerazporeja shranjevanje za ponovno uporabo. Glavni namen zbiranja smeti je zmanjšati puščanje spomina.
Za izvajanje GC so potrebni trije glavni pristopi:
- Označevanje in pomikanje - med procesom, ko pomnilnika zmanjka, GC poišče ves dostopni pomnilnik in nato zasede razpoložljivi pomnilnik.
- Štetje referenc - Dodeljeni predmeti vsebujejo referenčno število referenčne številke. Ko je število pomnilnika nič, predmet smeti in se nato uniči. Osvobojeni pomnilnik se vrne v kopico pomnilnika.
- Kopiranje zbirke - Obstajata dve spominski particiji. Če je prva particija polna, GC poišče vse dostopne podatkovne strukture in jih kopira na drugo particijo, pri čemer stisne pomnilnik po postopku GC in omogoča neprekinjen prosti pomnilnik.
Nekateri programski jeziki in platforme z vgrajenim GC (npr. Java, Lisp, C # in .Net) samoupravljajo puščanje pomnilnika, kar omogoča učinkovitejše programiranje.
Techopedia razlaga zbiranje smeti (GC)
Dinamičen pristop zbiranja smeti do avtomatske dodelitve kopice obravnava običajne in drage napake, ki pogosto povzročijo napake v resničnem svetu, če jih ne opazimo.
Ker jih je težko prepoznati in popraviti, so napake pri dodeljevanju drage. Tako zbiranje smeti mnogi ocenjujejo kot bistveno jezikovno lastnost, ki olajša delo programerja z manjšim ročnim upravljanjem dodelitve kopice. Vendar pa GC ni popoln, zato je treba upoštevati naslednje pomanjkljivosti:
- GC pri sproščanju pomnilnika porabi računalniške vire.
- Proces GC je nepredvidljiv, kar ima za posledico razpršene seje.
- Kadar neuporabljene reference predmetov niso ročno odstranjene, GC povzroči uhajanje logičnega pomnilnika.
- GC ne ve vedno, kdaj naj obdela v virtualnih pomnilniških okoljih sodobnih namiznih računalnikov.
- Proces GC slabo deluje s predpomnilnikom in sistemom navideznega pomnilnika, kar ima za posledico težave pri nastavljanju zmogljivosti.