Sakupljanje smeća
Izvor: Wikipedija
Sakupljanje smeća (engl. garbage collection) u informatici označava proces oslobađanja viška podataka iz memorije. Točnije, ono se kod programskih jezika odnosi na uništavanje nepotrebnih varijabli i objekata.
Dva su načina da se ovo učini. Jedan je ručno, a drugi automatski.
[uredi] Ručno sakupljanje smeća
Kod ručnog sakupljanja smeća sam programer odlučuje koji će objekt biti uništen, tj. koji objekt ili varijabla više u programu nisu potrebni. Naravno, kod ručnog sakupljanja smeća, postoji i ljudski faktor - zbog čega zbog čega se može dogoditi da programer zabunom uništi varijablu/objekt koji se kasnije ipak koristi u programu, što dovodi do greške u izvođenju programa. Klasičan primjer je kod jezika C++, operator delete koji kao parametre prihvaća objekt/varijablu koju treba uništiti.
Primjer ručnog sakupljanja smeća:
int *p_var = NULL; // deklaracija novog pokazivača p_var = new int; // dinamički alocirana memorija /* ....... drugi kod ........*/ delete p_var; // oslobođena memorija p_var = NULL; // pokazivač promjenjen u NULL
Polja alocirana s new također mogu slično biti de-alocirane s delete []:
int size = 10; int *p_var = NULL; // deklaracija novog pokazivača p_var = new int [size];// dinamički alocirana memorija /* ....... drugi kod ........*/ delete [] p_var; // oslobođena memorija p_var = NULL; // pokazivač promjenjen u NULL
[uredi] Automatsko sakupljanje smeća
Alternativan je način sakupljanja smeća automatsko, kod čega se taj posao prepušta samom prevoditelju. On ovaj to obavlja automatski, primjenjujući algoritme koji određuju koje varijable u kodu više neće biti potrebne, i uništava ih. Primjer ovakvog pristupa je programski jezik Java.