Sobes.tech
Junior — Middle

Kako se vrši automatsko sakupljanje smeća u upravljanim jezicima programiranja?

sobes.tech АИ

Одговор од АИ

Automatsko sakupljanje smeća (Garbage Collection, GC) u upravljanim jezicima kao što je C# realizuje se putem posebnog mehanizma koji prati objekte u memoriji i oslobađa one na koje više nema referenci.

Osnovni principi GC:

  • Praćenje referenci: GC određuje koje objekte su dostupni iz korenskih referenci (npr. lokalne promenljive, statička polja).
  • Detekcija nedostupnih objekata: Objekti bez referenci smatraju se smećem.
  • Oslobađanje memorije: GC oslobađa memoriju koju zauzimaju nedostupni objekti.
  • Generacije: Za optimizaciju sakupljanja smeća, deli se na generacije (Gen 0, Gen 1, Gen 2), što omogućava češće sakupljanje mladih objekata i ređe starih.

Primer u C#:

class Program
{
    static void Main()
    {
        var obj = new object();
        // korišćenje objekta
        obj = null; // objekat postaje nedostupan
        GC.Collect(); // forsirani poziv sakupljača smeća (retko se koristi u pravim aplikacijama)
    }
}

Na ovaj način, programer je oslobođen potrebe da ručno upravlja memorijom, što smanjuje broj grešaka povezanih sa curenjem memorije.