Junior — Middle
Можете ли објаснити принцип функционисања собирача смећа у програмским језицима?
sobes.tech АИ
Одговор од АИ
Sakupljač smeća (Garbage Collector, GC) je mehanizam automatskog upravljanja memorijom koji oslobađa memoriju zauzetu od strane objekata koji više nisu u upotrebi od strane programa.
Princip rada:
- Praćenje referenci: GC određuje koje objekte su dostupni (imaju reference iz aktivnog koda) i koje nisu.
- Detekcija smeća: Objekti bez referenci smatraju se smećem i podložni su brisanju.
- Oslobađanje memorije: GC oslobađa memoriju zauzetu od strane takvih objekata, kako bi se mogla ponovo koristiti.
U Flutteru (Dart), sakupljač smeća se zasniva na brojanju referenci i periodičnom čišćenju. Radi u pozadini i pokušava da minimizira pauze u radu aplikacije.
Primer:
class MyClass {
String data;
MyClass(this.data);
}
void main() {
MyClass obj = MyClass('Zdravo');
obj = null; // Sada je objekat MyClass nedostupan i može biti sakupljen od strane GC
}
Kada obj postane null, objekat MyClass postaje nedostupan i biće uklonjen od strane sakupljača smeća.