Middle+
LeakCanary кантип жок кылынган Activityлерге шилтемелерди аныктайт?
sobes.tech AI
AIден жооп
LeakCanary алсыз (Phantom Reference) же күчтүү (Strong Reference) шилтемени атайын көзөмөлчүдө колдонуп, ал " угуп " Activityнин жашоо циклин. Activity жок кылынганда, LeakCanary убакытты жазып алат жана калдык чогултууну күтөт. Эгер калдык чогултуудан кийин Activity объектиси эс тутумда дагы болсо, LeakCanary жадды түшүрүү (heap dump) баштап, аны талдайт жана GC Rootsтан ушул "тутулган" Activityге жетүү жолун табуу үчүн жеткиликтүүлүк графигин түзөт.
Негизги кадамдар:
- Жашоо циклин көзөмөлдөө: LeakCanary
ActivityLifecycleCallbacksжаздырат. - Белги коюу (Bookmarking):
onDestroy()чакырылганда, LeakCanary Activityге шилтемени түзөт (версияга жараша) жана убакытты жазып алат. - GC күтүү: LeakCanary калдык чогултууну күтөт, объект жок кылынганын текшерүү үчүн.
- GCден кийин текшерүү: Эгер Activity объектиси GCден кийин дагы жеткиликтүү болсо, бул потенциалдуу агып кетүүнү көрсөтөт.
- Heap dump: LeakCanary
Debug.dumpHprofData()чакырып, учурдагы эс тутум абалын сактайт. - Dump анализи: LeakCanary (Memory Analyzer Tool (MAT) же өзүнүн анализатору аркылуу) heap dumpту сканерлейт.
- Жолду издөө: Каражат GC Rootsтан "агып кеткен" объектке чейин жолдорду табат.
- Отчет: LeakCanary окууга оңой отчет түзүп, объектти калдык чогултуудан кармап турган шилтемелердин чынжырын көрсөтөт.