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.