LeakCanary Kotlin: पूर्ण गाइड उदाहरण सहित
Android डेवलपमेंट में मेमोरी मैनेजमेंट सबसे महत्वपूर्ण कार्यों में से एक है। मेमोरी लीक (memory leaks) वह स्थिति है जब कोई ऑब्जेक्ट, जो अब ऐप के लिए ज़रूरी नहीं है, अनजाने रेफरेंस के कारण मेमोरी में बना रहता है। इससे मेमोरी खपत बढ़ती है, बार-बार GC (Garbage Collection) पॉज़ होते हैं, लैग आते हैं, और अंततः OutOfMemoryError के साथ ऐप क्रैश हो जाता है। LeakCanary Square द्वारा बनाई गई एक ओपन-सोर्स लाइब्रेरी है जो Java और Kotlin में Android ऐप्स में मेमोरी लीक को ऑटोमैटिकली डिटेक्ट करती है।
इसकी ज़रूरत क्यों है? मैन्युअली लीक डीबग करना एक जटिल और समय लेने वाला काम है, जिसके लिए JVM की गहरी समझ, heap dump विश्लेषण और प्रोफाइलर (Android Studio Profiler, MAT) के उपयोग की आवश्यकता होती है। LeakCanary यह सब काम अपने ऊपर ले लेती है: यह ऑटोमैटिकली Activity, Fragment, ViewModel और अन्य कंपोनेंट्स के लाइफसाइकिल को ट्रैक करती है, और यदि कोई कंपोनेंट नष्ट होने के बाद गार्बेज कलेक्टर द्वारा साफ नहीं किया जाता, तो लाइब्रेरी heap dump बनाती है, उसका विश्लेषण करती है, और आपको एक तैयार रिपोर्ट देती है जिसमें लीक का सटीक कारण (रेफरेंस चेन) बताया जाता है। इससे डेवलपर्स घंटों के मैन्युअल विश्लेषण के बिना जल्दी से समस्या ढूंढ और ठीक कर सकते हैं।
LeakCanary एक लाइब्रेरी के रूप में ऐप में इंटीग्रेट होती है और बैकग्राउंड में काम करती है। इसका उपयोगकर्ता पर कोई प्रभाव नहीं पड़ता, लेकिन यह डेवलपर को (debug-बिल्ड में) नोटिफिकेशन और विस्तृत लॉग प्रदान करती है। वर्जन 2.x से, इस लाइब्रेरी को पूरी तरह से Kotlin में फिर से लिखा गया है, जो इसे अधिक परफॉर्मेंट और उपयोग में आसान बनाता है। यह नवीनतम Android आर्किटेक्चर कंपोनेंट्स (Jetpack) को सपोर्ट करती है और लीक डिटेक्शन प्रक्रिया को कस्टमाइज़ करने की सुविधा देती है।
इंस्टॉलेशन
LeakCanary Maven Central के माध्यम से उपलब्ध है। इसे इंस्टॉल करने के लिए, अपने मॉड्यूल (app) के build.gradle.kts (या build.gradle) फ़ाइल में डिपेंडेंसी जोड़ें।
महत्वपूर्ण: LeakCanary केवल debug-बिल्ड के लिए है। इसे कभी भी रिलीज़ (release) वर्जन में शामिल न करें, क्योंकि इससे परफॉर्मेंस और सुरक्षा पर नकारात्मक प्रभाव पड़ सकता है।
// build.gradle.kts (Module :app)
dependencies {
// debugImplementation — लाइब्रेरी केवल debug-बिल्ड में उपलब्ध होगी
debugImplementation("com.squareup.leakcanary:leakcanary-android:2.14")
// Jetpack Navigation सपोर्ट के लिए (वैकल्पिक)
debugImplementation("com.squareup.leakcanary:leakcanary-android-navigation:2.14")
// Process Lifecycle सपोर्ट के लिए (वैकल्पिक)
debugImplementation("com.squareup.leakcanary:leakcanary-android-process:2.14")
}
Gradle सिंक करने के बाद, LeakCanary ऐप स्टार्ट होने पर अपने आप अपना ContentProvider रजिस्टर कर लेगी। कोड में किसी अतिरिक्त इनिशियलाइज़ेशन की ज़रूरत नहीं है।
त्वरित शुरुआत
सबसे छोटा काम करने वाला उदाहरण सिर्फ लाइब्रेरी को इंस्टॉल करना है। इसके बाद LeakCanary ऑटोमैटिकली लीक ट्रैक करेगी।
1. ऊपर बताए अनुसार लाइब्रेरी इंस्टॉल करें।
2. ऐप को debug-मोड में रन करें।
3. कोई ऐसी कार्रवाई करें जो लीक का कारण बन सकती है (जैसे, अगर Activity लीक हो रही है तो स्क्रीन घुमाएं)।
4. अगर लीक डिटेक्ट होती है, तो आपको एक सिस्टम नोटिफिकेशन दिखेगा:

5. नोटिफिकेशन पर क्लिक करके विस्तृत रिपोर्ट (Heap Dump Info) वाली स्क्रीन खोलें।
टेस्टिंग के लिए लीक बनाने वाला कोड उदाहरण:
// लीक का उदाहरण: Activity पर स्टैटिक रेफरेंस
class LeakyActivity : AppCompatActivity() {
companion object {
// स्टैटिक रेफरेंस Activity को GC से बचाए रखेगा
var leakedActivity: Activity? = null
}
override fun onCreate(savedInsta