Junior — Middle
Sistem çalışması sırasında WeakReference ile referans verilen nesne ne zaman temizlenir?
sobes.tech yapay zeka
AI'dan gelen yanıt
WeakReference ile referans verilen nesne, ona güçlü referanslar kalmadığında çöp toplamaya aday hale gelir. Bu anda, çöp toplayıcı nesneyi temizleyebilir, hatta zayıf referanslar olsa bile.
Yani, nesnenin temizlenmesi, aşağıdaki durumlar gerçekleştiğinde çöp toplamadan sırasında olur:
- Nesneye güçlü bir referans kalmamışsa.
- Sadece zayıf referanslar (
WeakReference) varsa ve bunlar çöp toplamayı engellemiyorsa.
Nesne temizlendikten sonra, WeakReference.get() null döner.
Örnek:
val strongRef = SomeObject()
val weakRef = WeakReference(strongRef)
// strongRef mevcut, nesne toplanmayacak
println(weakRef.get()) // SomeObject
// Güçlü referansı kaldır
strongRef = null
// Çöp toplamadan sonra nesne temizlenebilir
System.gc()
println(weakRef.get()) // null, nesne toplanmışsa
Bu nedenle, nesne güçlü referanslar tarafından tutulmadığında, çöp toplamayla birlikte temizlenir.