V čom sa líšia rôzne typy odkazov a ako fungujú v správe pamäte?
sobes.tech AI
Odpoveď od AI
V správe pamäte v Android (a všeobecne v Java/Kotlin) existujú rôzne typy odkazov, ktoré ovplyvňujú zber odpadu:
-
Silný odkaz (Strong Reference): bežný odkaz na objekt. Pokiaľ existuje aspoň jeden silný odkaz, objekt nebude odstránený garbage collectorom.
-
Mäkký odkaz (Soft Reference): používa sa na cache. Objekt s mäkkým odkazom bude odstránený iba pri nedostatku pamäte.
-
Slabý odkaz (Weak Reference): objekt s týmto typom odkazu môže byť odstránený pri nasledujúcom cykle zberu odpadu, aj keď existujú slabé odkazy. Používa sa pre odkazy, ktoré by nemali brániť odstráneniu objektu.
-
Fantomový odkaz (Phantom Reference): používa sa na sledovanie okamihu, keď je objekt pripravený na odstránenie, ale ešte nebol odstránený. Umožňuje vykonávať dodatočné akcie po odstránení objektu.
Príklad slabého odkazu v Kotlin:
val strongRef = SomeObject()
val weakRef = WeakReference(strongRef)
// Ak sa strongRef stane null, objekt môže byť odstránený garbage collectorom a weakRef.get() vráti null
Použitie rôznych typov odkazov pomáha spravovať životný cyklus objektov a optimalizovať využívanie pamäte.