Middle+
LeakCanary necə məhv edilmiş Activity-ə istinadları müəyyən edir?
sobes.tech Süni İntellekt
AI-dan cavab
LeakCanary zəif (Phantom Reference) və ya güclü (Strong Reference) referans sahəsini xüsusi müşahidəçi daxilində istifadə edir və bu "dinləyir" Activity-nin həyat dövrünü. Activity məhv edildikdə, LeakCanary vaxtı qeyd edir və tullantı toplamağı gözləyir. Əgər tullantı toplamağından sonra Activity obyekti hələ də yaddaşda mövcuddursa, LeakCanary yaddaş dump-u (heap dump) başlatır, onu analiz edir və GC Roots-dan bu "sızmış" Activity-yə çatmaq üçün erişilebilirlik qrafiki qurur.
Əsas addımlar:
- Həyat dövrünün izlənməsi: LeakCanary
ActivityLifecycleCallbacksqeydiyyatdan keçirir. - Xəritə (Bookmarking):
onDestroy()çağırıldıqda, LeakCanary Activity-yə (versiyasına bağlı olaraq) referans yaradır və vaxtı qeyd edir. - GC-ni gözləmə: LeakCanary, obyektin məhv olub-olmadığını yoxlamaq üçün tullantı toplamağı gözləyir.
- GC-dən sonra yoxlama: Əgər Activity obyekti GC-dən sonra hələ də əlçatan olsa, bu potensial sızmağa işarə edir.
- Heap dump: LeakCanary
Debug.dumpHprofData()çağırır və hazırkı yaddaş vəziyyətini saxlayır. - Dump-un analizi: LeakCanary (Memory Analyzer Tool (MAT) və ya öz analizatoru vasitəsilə) heap dump-u skan edir.
- Yol tapma: Alət GC Roots-dan "sızmış" obyektə qədər olan yolları tapır.
- Hesabat: LeakCanary oxumaq asan olan hesabat hazırlayır, obyektin garbage collection-dən kənarda saxlayan referans zəncirlərini göstərir.