Middle+
LeakCanary nasıl yok edilen Activity'lere referansları belirler?
sobes.tech yapay zeka
AI'dan gelen yanıt
LeakCanary, zayıf (Phantom Reference) veya güçlü (Strong Reference) referans alan özel bir gözlemci kullanır ve bu gözlemci "dinler" Activity'nin yaşam döngüsünü. Activity yok edildiğinde, LeakCanary zamanı kaydeder ve çöp toplamayı bekler. Çöp toplamadan sonra Activity nesnesi hâlâ bellekte varsa, LeakCanary bir yığın dökümü (heap dump) başlatır, analiz eder ve GC Kökleri'nden bu "sızmış" Activity'ye ulaşan yolu bulmak için erişilebilirlik grafiği oluşturur.
Ana adımlar:
- Yaşam döngüsünün izlenmesi: LeakCanary,
ActivityLifecycleCallbackskaydeder. - Yer imi (Bookmarking):
onDestroy()çağrıldığında, LeakCanary Activity'ye (sürümüne bağlı olarak) bir referans oluşturur ve zamanı kaydeder. - GC'yi bekleme: LeakCanary, nesnenin yok edilip edilmediğini kontrol etmek için çöp toplamayı bekler.
- GC sonrası kontrol: Çöp toplamadan sonra Activity nesnesi hâlâ erişilebilir ise, bu potansiyel bir sızıntıya işaret eder.
- Yığın dökümü: LeakCanary,
Debug.dumpHprofData()çağırır ve mevcut bellek durumunu kaydeder. - Döküm analizi: LeakCanary (Memory Analyzer Tool (MAT) veya kendi analizörü aracılığıyla) yığın dökümünü tarar.
- Yol arama: Araç, GC Kökleri'nden "sızmış" nesneye kadar olan nesne grafiğinde yolları bulur.
- Rapor: LeakCanary, nesneyi çöp toplamadan tutan referans zincirini gösteren okunabilir bir rapor üretir.