Middle+
Kā LeakCanary nosaka saites uz iznīcinātām Activity?
sobes.tech AI
Atbilde no AI
LeakCanary izmanto vājo (Phantom Reference) vai stipru (Strong Reference) atsauci īpašā novērotājā, kas "uzklausa" Activity dzīves ciklu. Kad Activity tiek iznīcināta, LeakCanary reģistrē laiku un gaida atkritumu savākšanu. Ja pēc atkritumu savākšanas objekts Activity joprojām pastāv atmiņā, LeakCanary uzsāk atmiņas dumpu (heap dump), to analizē un veido pieejamības grafiku, lai atrastu ceļu no GC saknēm uz šo "izplūdušo" Activity.
Galvenie soļi:
- Dzīves cikla uzraudzība: LeakCanary reģistrē
ActivityLifecycleCallbacks. - Atzīmēšana (Bookmarking): Izsaucot
onDestroy(), LeakCanary izveido atsauci uz Activity (atkarībā no versijas) un reģistrē laiku. - Gaida GC: LeakCanary gaida, līdz notiek atkritumu savākšana, lai pārbaudītu, vai objekts ir iznīcināts.
- Pēc GC pārbaude: Ja objekts Activity joprojām ir pieejams pēc GC, tas norāda uz potenciālo noplūdi.
- Heap dump: LeakCanary izsauc
Debug.dumpHprofData(), lai saglabātu pašreizējo atmiņas stāvokli. - Dump analīze: LeakCanary (caur Memory Analyzer Tool (MAT) vai savu analītiķi) skenē heap dump.
- Ceļa meklēšana: Instruments atrod ceļus grafā no GC saknēm līdz "izplūdušajam" objektam.
- Ziņojums: LeakCanary ģenerē lasāmu ziņojumu, kas rāda saites ķēdi, kas tur objektu prom no atkritumu savākšanas.