Sobes.tech
Junior — Middle

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.