Čime se razlikuju različite vrste referenci i kako funkcionišu u upravljanju memorijom?
sobes.tech АИ
Одговор од АИ
U upravljanju memorijom u Androidu (i Java/Kotlin uopšte) postoje različite vrste referenci koje utiču na sakupljanje smeća:
-
Jake referenca (Strong Reference): obična referenca na objekat. Dok postoji bar jedna jaka referenca, objekat neće biti uklonjen od strane sakupljača smeća.
-
Mekana referenca (Soft Reference): koristi se za keširanje. Objekat sa mekanom referencom biće uklonjen samo u slučaju nedostatka memorije.
-
Slaba referenca (Weak Reference): objekat sa ovom vrstom reference može biti uklonjen u sledećem ciklusu sakupljanja smeća, čak i ako postoje slabe reference. Koristi se za reference koje ne bi trebalo da sprečavaju uklanjanje objekta.
-
Fantom referenca (Phantom Reference): koristi se za praćenje trenutka kada je objekat spreman za uklanjanje, ali još nije uklonjen. Omogućava izvršavanje dodatnih radnji nakon uklanjanja objekta.
Primer slabe reference u Kotlinu:
val strongRef = SomeObject()
val weakRef = WeakReference(strongRef)
// Ako strongRef postane null, objekat može biti uklonjen od strane sakupljača smeća, i weakRef.get() će vratiti null
Korišćenje različitih tipova referenci pomaže u upravljanju životnim ciklusom objekata i optimizaciji korišćenja memorije.