Sobes.tech
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:

  1. Həyat dövrünün izlənməsi: LeakCanary ActivityLifecycleCallbacks qeydiyyatdan keçirir.
  2. Xəritə (Bookmarking): onDestroy() çağırıldıqda, LeakCanary Activity-yə (versiyasına bağlı olaraq) referans yaradır və vaxtı qeyd edir.
  3. GC-ni gözləmə: LeakCanary, obyektin məhv olub-olmadığını yoxlamaq üçün tullantı toplamağı gözləyir.
  4. 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.
  5. Heap dump: LeakCanary Debug.dumpHprofData() çağırır və hazırkı yaddaş vəziyyətini saxlayır.
  6. Dump-un analizi: LeakCanary (Memory Analyzer Tool (MAT) və ya öz analizatoru vasitəsilə) heap dump-u skan edir.
  7. Yol tapma: Alət GC Roots-dan "sızmış" obyektə qədər olan yolları tapır.
  8. Hesabat: LeakCanary oxumaq asan olan hesabat hazırlayır, obyektin garbage collection-dən kənarda saxlayan referans zəncirlərini göstərir.