Sobes.tech
Junior — Middle

Kaip vyksta automatinis atminties valymas programos vykdymo aplinkoje?

sobes.tech AI

Atsakymas iš AI

Automatinis atminties valymas vykdymo aplinkoje, pavyzdžiui, Android, yra atliekamas naudojant šiukšlių surinkėją (Garbage Collector, GC). Jis stebi atmintyje esančius objektus ir išlaisvina tuos, kuriems programoje daugiau nėra nuorodų. Tai padeda išvengti atminties nutekėjimo ir išlaisvinti išteklius be tiesioginio kūrėjo įsikišimo.

Veikimo principas:

  • Šiukšlių surinkėjas periodiškai paleidžiamas ir skenuoja krūvą (heap) ieškodamas nepasiekiamų objektų.
  • Tokie objektai laikomi šiukšle ir jų atmintis išlaisvinama.

Android naudojama Dalvik arba ART vykdymo aplinka, turinti savo GC įgyvendinimus, optimizuotus mobiliesiems įrenginiams.

Java pavyzdys (Android):

// Objekto sukūrimas
MyObject obj = new MyObject();
// Kai obj daugiau nenaudojamas ir nuorodos į jį išnyksta,
// šiukšlių surinkėjas automatiškai išlaisvins atmintį.
obj = null;
// System.gc() galima iškviesti kaip GC pasiūlymą, tačiau tai negarantuoja nedelsiant valymo.
System.gc();