इस दस्तावेज़ में यह माना गया है कि आपने मेमोरी मैनेजमेंट के तहत, Android ऐप्लिकेशन के लिए सबसे सही तरीकों के दिशा-निर्देशों का पालन किया है. जैसे, अपने ऐप्लिकेशन की मेमोरी मैनेज करना.
परिचय
मेमोरी लीक, संसाधन लीक का एक टाइप है. यह तब होता है, जब कोई कंप्यूटर प्रोग्राम, ऐलोकेट की गई उस मेमोरी को रिलीज़ नहीं करता जिसकी अब ज़रूरत नहीं है. लीक की वजह से, ऐप्लिकेशन ओएस से ज़्यादा मेमोरी का अनुरोध कर सकता है. इससे ऐप्लिकेशन क्रैश हो सकता है. गलत तरीके अपनाने से, Android ऐप्लिकेशन में मेमोरी लीक हो सकती है. जैसे, संसाधनों को ठीक से न हटाना या ज़रूरत न होने पर, लिसनर को अनरजिस्टर न करना.
इस दस्तावेज़ में, कोड में मेमोरी लीक को रोकने, उसका पता लगाने, और उसे ठीक करने के सबसे सही तरीके बताए गए हैं. अगर आपने इस दस्तावेज़ में बताए गए तरीकों को आज़मा लिया है और आपको लगता है कि हमारे एसडीके टूल में मेमोरी लीक हो रही है, तो Google के एसडीके टूल से जुड़ी समस्याओं की शिकायत कैसे करें लेख पढ़ें.
सहायता टीम से संपर्क करने से पहले
Google की सहायता टीम से मेमोरी लीक की शिकायत करने से पहले, इस दस्तावेज़ में दिए गए सबसे सही तरीकों और डीबग करने के चरणों का पालन करें. इससे यह पक्का किया जा सकेगा कि गड़बड़ी आपके कोड में नहीं है. इन चरणों से आपकी समस्या हल हो सकती है. अगर ऐसा नहीं होता है, तो इससे वह जानकारी जनरेट होती है जिसकी ज़रूरत Google की सहायता टीम को आपकी मदद करने के लिए होती है.
मेमोरी लीक को रोकना
Google SDK टूल का इस्तेमाल करने वाले कोड में, मेमोरी लीक होने की कुछ सामान्य वजहों से बचने के लिए, इन सबसे सही तरीकों का पालन करें.
Android ऐप्लिकेशन के लिए सबसे सही तरीके
देखें कि आपने अपने Android ऐप्लिकेशन में ये सभी काम किए हैं या नहीं:
- इस्तेमाल नहीं किए जा रहे संसाधनों को रिलीज़ करें.
- ज़रूरत न होने पर, दर्शकों को अनरजिस्टर करना.
- ज़रूरत न होने पर टास्क रद्द करना.
- संसाधनों को रिलीज़ करने के लिए, लाइफ़साइकल के तरीके फ़ॉरवर्ड करें.
- SDK टूल के नए वर्शन का इस्तेमाल करना
इनमें से हर तरीके के बारे में ज़्यादा जानकारी के लिए, नीचे दिए गए सेक्शन देखें.
इस्तेमाल नहीं किए गए संसाधनों को रिलीज़ करना
जब आपका Android ऐप्लिकेशन किसी रिसॉर्स का इस्तेमाल करता है, तो ज़रूरत न होने पर उसे रिलीज़ करना न भूलें. ऐसा न करने पर, आपके ऐप्लिकेशन के उनका इस्तेमाल बंद करने के बाद भी, संसाधन मेमोरी का इस्तेमाल करता रहेगा. ज़्यादा जानकारी के लिए, Android दस्तावेज़ में ऐक्टिविटी का लाइफ़साइकल देखें.
GeoSDKs में पुराने GoogleMap रेफ़रंस रिलीज़ करना
एक आम गलती यह है कि अगर NavigationView या MapView का इस्तेमाल करके कैश मेमोरी में सेव किया जाता है, तो GoogleMap से मेमोरी लीक हो सकती है. GoogleMap का, उस NavigationView या MapView के साथ 1:1 संबंध होता है जिससे उसे वापस पाया जाता है. आपको यह पक्का करना होगा कि GoogleMap को कैश मेमोरी में सेव न किया गया हो या NavigationView#onDestroy या MapView#onDestroy को कॉल करने पर, रेफ़रंस रिलीज़ हो गया हो. अगर इन व्यू को रैप करने के लिए, NavigationSupportFragment, MapSupportFragment या अपने फ़्रैगमेंट का इस्तेमाल किया जा रहा है, तो Fragment#onDestroyView में रेफ़रंस को रिलीज़ करना ज़रूरी है.
class NavFragment : SupportNavigationFragment() {
var googleMap: GoogleMap?
override fun onCreateView(
inflater: LayoutInflater,
parent: ViewGroup?,
savedInstanceState: Bundle?,
): View {
super.onCreateView(inflater,parent,savedInstanceState)
getMapAsync{map -> googleMap = map}
}
override fun onDestroyView() {
googleMap = null
}
}
ज़रूरत न होने पर, दर्शकों को अनरजिस्टर करना
जब आपका Android ऐप्लिकेशन किसी इवेंट के लिए लिसनर रजिस्टर करता है, जैसे कि बटन पर क्लिक या व्यू की स्थिति में बदलाव, तो ऐप्लिकेशन को इवेंट को मॉनिटर करने की ज़रूरत न होने पर, लिसनर को अनरजिस्टर करना न भूलें. ऐसा न करने पर, ऐप्लिकेशन के बंद होने के बाद भी, सुनने वाले लोग डिवाइस की मेमोरी का इस्तेमाल करते रहेंगे.
उदाहरण के लिए, मान लें कि आपका ऐप्लिकेशन Navigation SDK टूल का इस्तेमाल करता है और यह आर्टवर्क के पहुंचने की जानकारी देने वाले इवेंट सुनने के लिए, यहां दिए गए लिसनर को कॉल करता है: अगर ऐप्लिकेशन को आर्टवर्क के पहुंचने की जानकारी देने वाले इवेंट पर नज़र रखने की ज़रूरत नहीं है, तो उसे removeArrivalListener
को भी कॉल करना चाहिए.addArrivalListener
var arrivalListener: Navigator.ArrivalListener? = null
fun registerNavigationListeners() {
arrivalListener =
Navigator.ArrivalListener {
...
}
navigator.addArrivalListener(arrivalListener)
}
override fun onDestroy() {
navView.onDestroy()
if (arrivalListener != null) {
navigator.removeArrivalListener(arrivalListener)
}
...
super.onDestroy()
}
ज़रूरत न होने पर टास्क रद्द करना
जब कोई Android ऐप्लिकेशन, डाउनलोड या नेटवर्क अनुरोध जैसे किसी ऐसे टास्क को शुरू करता है जो मुख्य फ़्लो के साथ सिंक नहीं होता, तो पक्का करें कि टास्क पूरा होने पर उसे रद्द कर दिया जाए. अगर टास्क को रद्द नहीं किया जाता है, तो ऐप्लिकेशन के बंद होने के बाद भी वह बैकग्राउंड में चलता रहता है.
सबसे सही तरीकों के बारे में ज़्यादा जानने के लिए, Android दस्तावेज़ में अपने ऐप्लिकेशन की मेमोरी मैनेज करना देखें.
संसाधनों को रिलीज़ करने के लिए, लाइफ़साइकल के तरीके फ़ॉरवर्ड करना
अगर आपका ऐप्लिकेशन Navigation या Maps SDK टूल का इस्तेमाल करता है, तो navView
पर लाइफ़साइकल के तरीकों (बोल्ड में दिखाए गए) को फ़ॉरवर्ड करके, संसाधनों को रिलीज़ करना न भूलें. ऐसा करने के लिए, नेविगेशन SDK टूल में NavigationView
या Maps या नेविगेशन SDK टूल में MapView
का इस्तेमाल करें. इसके बजाय, NavigationView
और MapView
का इस्तेमाल करने के बजाय, SupportNavigationFragment
या
SupportMapFragment
का इस्तेमाल किया जा सकता है. सहायता फ़्रैगमेंट, लाइफ़साइकल के तरीकों को फ़ॉरवर्ड करते हैं.
class NavViewActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
...
navView = ...
navView.onCreate(savedInstanceState)
...
}
override fun onSaveInstanceState(savedInstanceState: Bundle) {
super.onSaveInstanceState(savedInstanceState)
navView.onSaveInstanceState(savedInstanceState)
}
override fun onTrimMemory(level: Int) {
super.onTrimMemory(level)
navView.onTrimMemory(level)
}
/* Same with
override fun onStart()
override fun onResume()
override fun onPause()
override fun onConfigurationChanged(...)
override fun onStop()
override fun onDestroy()
*/
}
SDK टूल के नए वर्शन इस्तेमाल करना
Google SDK टूल को लगातार अपडेट किया जाता है. इनमें नई सुविधाएं जोड़ी जाती हैं, गड़बड़ियां ठीक की जाती हैं, और परफ़ॉर्मेंस को बेहतर बनाया जाता है. ये सुधार पाने के लिए, अपने ऐप्लिकेशन में SDK टूल को अप-टू-डेट रखें.
मेमोरी लीक को डीबग करना
अगर इस दस्तावेज़ में दिए गए सभी सुझावों को लागू करने के बाद भी, आपको मेमोरी लीक दिखती है, तो डीबग करने के लिए यह तरीका अपनाएं.
शुरू करने से पहले, आपको यह पता होना चाहिए कि Android, स्टोरेज को कैसे मैनेज करता है. ज़्यादा जानकारी के लिए, Android के मेमोरी मैनेजमेंट की खास जानकारी लेख पढ़ें.
मेमोरी लीक को डीबग करने के लिए, यह तरीका अपनाएं:
- समस्या को फिर से दोहराएं. इसे डीबग करने के लिए यह चरण ज़रूरी है.
- देखें कि मेमोरी का इस्तेमाल तय सीमा के मुताबिक है या नहीं. देखें कि ज़्यादा इस्तेमाल, असल में आपके ऐप्लिकेशन को चलाने के लिए ज़रूरी मेमोरी है या नहीं.
- हाई-लेवल पर डीबग करें. डीबग करने के लिए, कई तरह की सुविधाएं उपलब्ध हैं. Android में मेमोरी से जुड़ी समस्याओं को डीबग करने में, तीन अलग-अलग स्टैंडर्ड टूल सेट मदद करते हैं: Android Studio, Perfetto, और Android Debug Bridge (adb) कमांड लाइन की सुविधाएं.
- अपने ऐप्लिकेशन के मेमोरी इस्तेमाल की जांच करें. ढेर का डंप और ऐलोकेशन ट्रैकिंग पाएं और फिर उसका विश्लेषण करें.
- मेमोरी लीक ठीक करें.
इन चरणों के बारे में ज़्यादा जानकारी, नीचे दिए गए सेक्शन में दी गई है.
पहला चरण: समस्या को फिर से बनाना
अगर आपको समस्या दोबारा नहीं दिख रही है, तो सबसे पहले उन स्थितियों पर ध्यान दें जिनकी वजह से मेमोरी लीक हो सकती है. अगर आपको पता है कि समस्या फिर से आ गई है, तो सीधे हेप डंप पर जाकर समस्या हल की जा सकती है. हालांकि, अगर आपको ऐप्लिकेशन के स्टार्टअप या किसी अन्य समय पर ही हेप डंप मिलता है, तो हो सकता है कि आपने लीक को ट्रिगर करने की शर्तें चालू न की हों. समस्या को फिर से बनाने की कोशिश करते समय, अलग-अलग स्थितियों में काम करने पर विचार करें:
सुविधाओं का कौनसा सेट चालू है?
उपयोगकर्ता की कौनसी कार्रवाइयों के क्रम से लीक ट्रिगर होती है?
- क्या आपने इस क्रम को चालू करने की कई बार कोशिश की है?
ऐप्लिकेशन ने लाइफ़साइकल की किन स्थितियों को पूरा किया है?
- क्या आपने लाइफ़साइकल की अलग-अलग स्थितियों में कई बार कोशिश की है?
पक्का करें कि एसडीके के नए वर्शन में भी समस्या आ रही हो. ऐसा हो सकता है कि पिछले वर्शन की समस्या पहले ही ठीक हो गई हो.
दूसरा चरण: देखें कि ऐप्लिकेशन के लिए मेमोरी का इस्तेमाल तय सीमा के मुताबिक है या नहीं
हर सुविधा के लिए, ज़्यादा मेमोरी की ज़रूरत होती है. अलग-अलग स्थितियों को डीबग करते समय, इस बात का ध्यान रखें कि क्या यह उम्मीद के मुताबिक इस्तेमाल है या यह असल में मेमोरी लीक है. उदाहरण के लिए, अलग-अलग सुविधाओं या उपयोगकर्ता के टास्क के लिए, इन संभावनाओं पर विचार करें:
लीक होने की संभावना: कई बार दोहराए जाने वाले सिनेरियो को चालू करने पर, समय के साथ मेमोरी का इस्तेमाल बढ़ जाता है.
मेमोरी के इस्तेमाल की अनुमानित सीमा: स्थिति बंद होने के बाद, मेमोरी वापस ले ली जाती है.
मेमोरी के इस्तेमाल की अनुमानित सीमा: मेमोरी का इस्तेमाल कुछ समय के लिए बढ़ता है और फिर कम हो जाता है. ऐसा, सीमित कैश मेमोरी या मेमोरी के इस्तेमाल की अनुमानित सीमा की वजह से हो सकता है.
अगर ऐप्लिकेशन की परफ़ॉर्मेंस में मेमोरी के इस्तेमाल में कोई बदलाव नहीं हुआ है, तो इस समस्या को ठीक करने के लिए, ऐप्लिकेशन की मेमोरी मैनेज करें. मदद पाने के लिए, अपने ऐप्लिकेशन की मेमोरी मैनेज करना लेख पढ़ें.
तीसरा चरण: हाई लेवल पर डीबग करना
मेमोरी लीक को डीबग करते समय, सबसे ऊपर से शुरू करें. इसके बाद, जब आपको समस्या की वजह का पता चल जाए, तो ड्रिल-डाउन करें. पहले यह पता लगाएं कि समय के साथ कोई लीक तो नहीं हो रही है. इसके लिए, डीबग करने वाले इन टूल में से किसी एक का इस्तेमाल करें:
Android Studio का मेमोरी प्रोफ़ाइलर (सुझाया गया)
Android Studio का मेमोरी प्रोफ़ाइलर
इस टूल से, आपको खर्च की गई मेमोरी का विज़ुअल हिस्टोग्राम दिखता है. इसी इंटरफ़ेस से ही, हेप डंप और ऐलोकेशन ट्रैकिंग को भी ट्रिगर किया जा सकता है. यह टूल, डिफ़ॉल्ट तौर पर सुझाया जाता है. ज़्यादा जानकारी के लिए, Android Studio का मेमोरी प्रोफ़ाइलर देखें.
Perfetto Memory Counters
Perfetto की मदद से, कई मेट्रिक को ट्रैक करने पर सटीक कंट्रोल मिलता है. साथ ही, सभी मेट्रिक को एक ही हिस्टोग्राम में दिखाया जाता है. ज़्यादा जानकारी के लिए, Perfetto मेमोरी काउंटर देखें.
Android डीबग ब्रिज (adb) कमांड-लाइन की सुविधाएं
Perfetto की मदद से ट्रैक किए जा सकने वाले ज़्यादातर आंकड़े, adb
कमांड-लाइन की सुविधा के तौर पर भी उपलब्ध होते हैं. इन आंकड़ों के बारे में सीधे तौर पर क्वेरी की जा सकती है. कुछ अहम उदाहरण यहां दिए गए हैं:
Meminfo की मदद से, किसी समय पर मेमोरी की पूरी जानकारी देखी जा सकती है.
Procstats, समय के साथ इकट्ठा किए गए कुछ अहम आंकड़े दिखाता है.
यहां एक अहम आंकड़ा देखना है, वह है ज़्यादा से ज़्यादा फ़िज़िकल मेमोरी फ़ुटप्रिंट (maxRSS), जिसकी ऐप्लिकेशन को समय के साथ ज़रूरत होती है. ऐसा हो सकता है कि MaxPSS उतना सटीक न हो. सटीक जानकारी पाने के लिए, adb shell dumpsys procstats --help –start-testing
फ़्लैग देखें.
ऐलोकेशन ट्रैकिंग
ऐलोकेशन ट्रैकिंग से उस स्टैक ट्रेस की पहचान की जाती है जहां मेमोरी को ऐलोकेट किया गया था और यह पता चलता है कि उसे रिलीज़ किया गया था या नहीं. यह चरण, नेटिव कोड में लीक का पता लगाने के लिए खास तौर पर मददगार होता है. इस टूल से स्टैक ट्रेस की पहचान की जाती है. इसलिए, यह समस्या की असल वजह को तुरंत डीबग करने या समस्या को फिर से बनाने का तरीका जानने का एक बेहतरीन तरीका हो सकता है. ऐलोकेशन ट्रैकिंग का इस्तेमाल करने का तरीका जानने के लिए, ऐलोकेशन ट्रैकिंग की मदद से नेटिव कोड में मेमोरी डीबग करना लेख पढ़ें.
चौथा चरण: हीप डंप की मदद से, अपने ऐप्लिकेशन के मेमोरी इस्तेमाल की जांच करना
मेमोरी लीक का पता लगाने का एक तरीका यह है कि अपने ऐप्लिकेशन का हीप डंप पाएं और फिर उसमें लीक की जांच करें. हीप डंप, ऐप्लिकेशन की मेमोरी में मौजूद सभी ऑब्जेक्ट का स्नैपशॉट होता है. इसका इस्तेमाल, मेमोरी लीक और मेमोरी से जुड़ी अन्य समस्याओं का पता लगाने के लिए किया जा सकता है.
Android Studio, मेमोरी लीक का पता लगा सकता है. हालांकि, जीसी इनका ठीक नहीं कर सकता. जब कोई हेप डंप कैप्चर किया जाता है, तो Android Studio यह जांच करता है कि क्या कोई ऐसी गतिविधि या फ़्रैगमेंट है जिसे अब भी ऐक्सेस किया जा सकता है, लेकिन उसे पहले ही नष्ट कर दिया गया है.
- हीप डंप कैप्चर करना.
- मेमोरी लीक का पता लगाने के लिए, हीप डंप का विश्लेषण करें.
- मेमोरी लीक की समस्या ठीक करना.
ज़्यादा जानकारी के लिए, नीचे दिए गए सेक्शन देखें.
हीप डंप कैप्चर करना
हीप डंप कैप्चर करने के लिए, Android Debug Bridge (adb) या Android Studio के मेमोरी प्रोफ़ाइलर का इस्तेमाल किया जा सकता है.
हीप डंप कैप्चर करने के लिए adb का इस्तेमाल करना
adb का इस्तेमाल करके, हेप डंप कैप्चर करने के लिए यह तरीका अपनाएं:
- अपने Android डिवाइस को कंप्यूटर से कनेक्ट करें.
- कमांड प्रॉम्प्ट खोलें और उस डायरेक्ट्री पर जाएं जहां adb टूल मौजूद हैं.
हीप डंप कैप्चर करने के लिए, यह कमांड चलाएं :
adb shell am dumpheap my.app.name $PHONE_FILE_OUT
हीप डंप वापस पाने के लिए, यह कमांड चलाएं:
adb pull $PHONE_FILE_OUT $LOCAL_FILE.
हीप डंप कैप्चर करने के लिए, Android Studio का इस्तेमाल करना
Android Studio के मेमोरी प्रोफ़ाइलर का इस्तेमाल करके, हेप डंप कैप्चर करने के लिए, Android के हेप डंप कैप्चर करें सेक्शन में यह तरीका अपनाएं.
मेमोरी लीक का पता लगाने के लिए, हीप डंप का विश्लेषण करना
हीप डंप कैप्चर करने के बाद, उसका विश्लेषण करने के लिए Android Studio के मेमोरी प्रोफ़ाइलर का इस्तेमाल किया जा सकता है. ऐसा करने के लिए, यह तरीका अपनाएं:
Android Studio में अपना Android प्रोजेक्ट खोलें.
रन करें चुनें. इसके बाद, डीबग करें कॉन्फ़िगरेशन चुनें.
Android Profiler टैब खोलें.
मेमोरी चुनें.
हैप डंप खोलें को चुनें और जनरेट की गई हैप डंप फ़ाइल चुनें. मेमोरी प्रोफ़ाइलर, आपके ऐप्लिकेशन की मेमोरी के इस्तेमाल का ग्राफ़ दिखाता है.
हेप डंप का विश्लेषण करने के लिए, ग्राफ़ का इस्तेमाल करें:
उन ऑब्जेक्ट की पहचान करना जिनका अब इस्तेमाल नहीं किया जा रहा है.
उन ऑब्जेक्ट की पहचान करना जो ज़्यादा मेमोरी का इस्तेमाल करते हैं.
देखें कि हर ऑब्जेक्ट कितनी मेमोरी का इस्तेमाल कर रहा है.
इस जानकारी का इस्तेमाल करके, मेमोरी लीक का सोर्स ढूंढें या कम करें और उसे ठीक करें.
पांचवां चरण: मेमोरी लीक ठीक करना
मेमोरी लीक के सोर्स की पहचान करने के बाद, उसे ठीक किया जा सकता है. अपने Android ऐप्लिकेशन में मेमोरी लीक की समस्या को ठीक करने से, ऐप्लिकेशन की परफ़ॉर्मेंस और स्थिरता को बेहतर बनाने में मदद मिलती है. स्थिति के हिसाब से, जानकारी अलग-अलग होती है. हालांकि, इन सुझावों से आपको मदद मिल सकती है:
पक्का करें कि आपका ऐप्लिकेशन, Android के विषय अपने ऐप्लिकेशन की मेमोरी मैनेज करना में दिए गए सुझाव के मुताबिक, मेमोरी को ऐलोकेट और डिऐलोकेट करता हो.
अपने ऐप्लिकेशन से, इस्तेमाल नहीं किए जा रहे कोड या संसाधनों को हटाएं. Android ऐप्लिकेशन के बारे में ज़्यादा जानने के लिए, Android ऐप्लिकेशन के लिए सबसे सही तरीके लेख पढ़ें.
डीबग करने के अन्य टूल
अगर इन चरणों को पूरा करने के बाद भी, आपको मेमोरी लीक का पता नहीं चलता और न ही उसे ठीक नहीं किया जा सकता, तो ये टूल आज़माएं:
- अलोकेशन ट्रैकिंग की मदद से, नेटिव कोड में मेमोरी को डीबग करना.
- LeakCanary की मदद से, लीक की पहचान करें.
ऐलोकेशन ट्रैकिंग की मदद से, नेटिव कोड में मेमोरी को डीबग करना
भले ही, सीधे तौर पर नेटिव कोड का इस्तेमाल न किया जा रहा हो, लेकिन कई सामान्य Android लाइब्रेरी ऐसा करती हैं. इनमें Google SDK टूल भी शामिल हैं. अगर आपको लगता है कि मेमोरी लीक, नेटिव कोड में है, तो इसे डीबग करने के लिए कई टूल उपलब्ध हैं. Android Studio या heapprofd (Perfetto के साथ भी काम करता है) की मदद से, ऐलोकेशन ट्रैकिंग करना, मेमोरी लीक की संभावित वजहों की पहचान करने का एक बेहतरीन तरीका है. साथ ही, आम तौर पर यह डीबग करने का सबसे तेज़ तरीका भी है.
ऐलोकेशन ट्रैकिंग का एक और फ़ायदा यह है कि इससे आपको हेप में मौजूद संवेदनशील जानकारी को शामिल किए बिना नतीजे शेयर करने की सुविधा मिलती है.
LeakCanary की मदद से लीक की पहचान करना
LeakCanary, Android ऐप्लिकेशन में मेमोरी लीक की पहचान करने वाला एक बेहतरीन टूल है. अपने ऐप्लिकेशन में LeakCanary का इस्तेमाल करने के तरीके के बारे में ज़्यादा जानने के लिए, LeakCanary पर जाएं.
Google SDK टूल से जुड़ी समस्याओं की शिकायत करने का तरीका
अगर आपने इस दस्तावेज़ में दिए गए तरीकों को आज़मा लिया है और आपको लगता है कि हमारे SDK में मेमोरी लीक हो रही है, तो ग्राहक सहायता टीम से संपर्क करें. साथ ही, ज़्यादा से ज़्यादा जानकारी दें:
मेमोरी लीक की समस्या को फिर से बनाने का तरीका. अगर चरणों के लिए जटिल कोडिंग की ज़रूरत है, तो हमारे सैंपल ऐप्लिकेशन में समस्या को दोहराने वाले कोड को कॉपी करें. साथ ही, यूज़र इंटरफ़ेस (यूआई) में लीक को ट्रिगर करने के लिए, ज़रूरी अन्य चरणों की जानकारी दें.
आपके ऐप्लिकेशन से कैप्चर किए गए हीप डंप, जिनमें समस्या फिर से बनाई गई है. समय के दो अलग-अलग पॉइंट पर हेप डंप कैप्चर करें, जिनसे पता चलता हो कि मेमोरी के इस्तेमाल में काफ़ी बढ़ोतरी हुई है.
अगर नेटिव मेमोरी लीक होने की आशंका है, तो heapprofd से एलोकेशन ट्रैकिंग आउटपुट शेयर करें.
गड़बड़ी की रिपोर्ट, जो लीक की स्थिति को फिर से बनाने के बाद ली गई हो.
मेमोरी से जुड़े किसी भी क्रैश के स्टैक ट्रेस.
अहम जानकारी: आम तौर पर, स्टैक ट्रेस से मेमोरी से जुड़ी समस्या को डीबग करने में मदद नहीं मिलती. इसलिए, पक्का करें कि आपने जानकारी का कोई दूसरा फ़ॉर्म भी उपलब्ध कराया हो.