Sobes.tech
Junior — Middle

Sistem işləmə prosesi zamanı WeakReference ilə istinad olunan obyektin təmizlənməsi nə vaxt baş verir?

sobes.tech Süni İntellekt

AI-dan cavab

WeakReference ilə istinad olunan obyekt, ona güclü istinadlar (strong references) artıq olmadıqda, tullantı toplanmasına namizəd olur. Bu zaman, tullantı toplayıcı obyektin təmizləyə bilər, hətta zəif istinadlar olsa belə.

Yəni, obyektin təmizlənməsi, əgər:

  • Obəyə güclü istinadlar yoxdursa.
  • Yalnız zəif istinadlar (WeakReference) varsa və onlar tullantı toplanmasını əngəlləmirsə.

Obyekt təmizləndikdən sonra, WeakReference.get() null qaytaracaq.

Misal:

val strongRef = SomeObject()
val weakRef = WeakReference(strongRef)

// strongRef mövcuddur, obyekt toplanmayacaq
println(weakRef.get()) // SomeObject

// Güclü istinadını silirik
strongRef = null

// Tullantı toplanmasından sonra obyekt təmizlənə bilər
System.gc()
println(weakRef.get()) // null, əgər obyekt toplanıbsa

Beləliklə, təmizləmə, obyekt güclü istinadlar tərəfindən saxlanılmırsa, tullantı toplanma zamanı baş verir.