Sobes.tech
Middle+

როგორ מזהה LeakCanary კავშირებს განადგურებული Activity-ებთან?

sobes.tech AI

პასუხი AI-სგან

LeakCanary कमजोर (Phantom Reference) या मजबूत (Strong Reference) संदर्भ क्षेत्राचा वापर एक विशेष निरीक्षकात करतो, जो "ऐकतो" Activity च्या जीवनचक्राला. जेव्हा Activity नष्ट होते, तेव्हा LeakCanary वेळ नोंदवतो आणि कचर्‍याची संकलनाची वाट पाहतो. जर कचर्‍याची संकलनानंतरही Activity वस्तू मेमरीत अस्तित्वात असेल, तर LeakCanary हिप डंप (heap dump) सुरू करतो, त्याचे विश्लेषण करतो आणि GC Roots पासून त्या "बाह्य" Activity पर्यंतचा मार्ग शोधण्यासाठी प्रवेशयोग्यतेचा ग्राफ तयार करतो.

महत्त्वाचे टप्पे:

  1. जीवनचक्राचे निरीक्षण: LeakCanary ActivityLifecycleCallbacks नोंदवतो.
  2. बुकमार्किंग (Bookmarking): onDestroy() कॉल करताना, LeakCanary Activity कडे संदर्भ तयार करतो (आवृत्तीवर अवलंबून) आणि वेळ नोंदवतो.
  3. GC ची वाट पाहणे: LeakCanary, वस्तू नष्ट झाली का ते तपासण्यासाठी, कचर्‍याची संकलनाची वाट पाहते.
  4. GC नंतर तपासणी: जर Activity वस्तू GC नंतरही उपलब्ध असेल, तर हे संभाव्य लीक सूचित करते.
  5. Heap dump: LeakCanary Debug.dumpHprofData() कॉल करतो, जे वर्तमान स्मृती स्थिती जतन करते.
  6. डंपचे विश्लेषण: LeakCanary (Memory Analyzer Tool (MAT) किंवा स्वतःचा विश्लेषक) हिप डंप स्कॅन करतो.
  7. मार्ग शोधणे: साधन GC Roots पासून "बाह्य" वस्तूपर्यंतच्या मार्गांना शोधते.
  8. अहवाल: LeakCanary वाचण्यायोग्य अहवाल तयार करतो, जो वस्तूला GC पासून दूर ठेवणाऱ्या संदर्भांची साखळी दर्शवतो.