मेमोरी मैनेजमेंट के सबसे सही तरीके

इस दस्तावेज़ में यह माना गया है कि आपने मेमोरी मैनेजमेंट के तहत, Android ऐप्लिकेशन के लिए सबसे सही तरीकों का पालन किया है. जैसे, अपने ऐप्लिकेशन की मेमोरी मैनेज करना.

परिचय

मेमोरी लीक, संसाधन लीक का एक टाइप है. यह तब होता है, जब कोई कंप्यूटर प्रोग्राम, ऐलोकेट की गई उस मेमोरी को रिलीज़ नहीं करता जिसकी अब ज़रूरत नहीं है. मेमोरी लीक होने पर, ऐप्लिकेशन ओएस से ज़्यादा मेमोरी का अनुरोध कर सकता है. इससे ऐप्लिकेशन क्रैश हो सकता है. गलत तरीके अपनाने से, Android ऐप्लिकेशन में मेमोरी लीक हो सकती है. जैसे, संसाधनों को सही तरीके से इस्तेमाल न करना या ज़रूरत न होने पर, लिसनर को अनरजिस्टर न करना.

इस दस्तावेज़ में आपके कोड में मेमोरी लीक को रोकने, उसका पता लगाने और उसे ठीक करने के कुछ सबसे सही तरीके बताए गए हैं. अगर आपने इस दस्तावेज़ में दिए गए तरीकों को आज़मा लिया है और आपको लगता है कि हमारे एसडीके टूल में मेमोरी लीक हो रही है, तो Google के एसडीके टूल से जुड़ी समस्याओं की शिकायत करने का तरीका देखें.

सहायता टीम से संपर्क करने से पहले

मेमोरी लीक की शिकायत Google सहायता टीम से करने से पहले, यह पक्का करने के लिए कि आपके कोड में गड़बड़ी न हो, इस दस्तावेज़ में दिए गए डीबग करने के चरणों के साथ-साथ, सबसे सही तरीके अपनाएं. इन तरीकों से आपकी समस्या हल हो सकती है. अगर ऐसा नहीं होता है, तो इससे जानकारी जनरेट हो जाती है, ताकि Google सहायता टीम आपकी मदद कर सके.

मेमोरी लीक को रोकना

Google SDK टूल का इस्तेमाल करने वाले कोड में, मेमोरी लीक होने की आम वजहों से बचने के लिए, यहां दिए गए सबसे सही तरीके अपनाएं.

Android ऐप्लिकेशन के लिए सबसे सही तरीके

देखें कि आपने अपने Android ऐप्लिकेशन में ये सभी काम किए हैं या नहीं:

  1. इस्तेमाल नहीं किए जा रहे संसाधनों को रिलीज़ करें.
  2. ज़रूरत न होने पर लिसनर का रजिस्ट्रेशन रद्द करें.
  3. ज़रूरत न होने पर टास्क रद्द करना.
  4. संसाधन रिलीज़ करने के लिए, लाइफ़साइकल के तरीके फ़ॉरवर्ड करें.
  5. SDK टूल के नए वर्शन का इस्तेमाल करना

इनमें से हर तरीके के बारे में खास जानकारी के लिए, नीचे दिए गए सेक्शन देखें.

इस्तेमाल नहीं किए गए संसाधनों को रिलीज़ करें

जब आपका Android ऐप्लिकेशन किसी संसाधन का इस्तेमाल करता है, तो संसाधन की ज़रूरत न होने पर उसे रिलीज़ करना न भूलें. ऐसा न करने पर, आपके ऐप्लिकेशन के उनका इस्तेमाल बंद करने के बाद भी, संसाधन मेमोरी का इस्तेमाल करता रहेगा. ज़्यादा जानकारी के लिए, Android के दस्तावेज़ में गतिविधि का लाइफ़साइकल देखें.

GeoSDKs में Google Maps के पुराने रेफ़रंस रिलीज़ करें

एक आम गलती यह है कि अगर NavigationView या MapView का इस्तेमाल करके कैश मेमोरी में सेव किया जाता है, तो GoogleMap की वजह से मेमोरी लीक हो सकती है. GoogleMap का, उस NavigationView या MapView से 1:1 संबंध होता है जिससे उसे वापस पाया जाता है. आपको यह पक्का करना होगा कि GoogleMap को कैश मेमोरी में सेव न किया गया हो या NavigationView#onDestroy या MapView#onDestroy को कॉल करने पर, रेफ़रंस रिलीज़ हो गया हो. अगर नेविगेशनSupportफ़्रैगमेंट, MapSupportफ़्रैगमेंट या अपने खुद के फ़्रैगमेंट का इस्तेमाल इन व्यू को रैप करने के लिए कर रहे हैं, तो रेफ़रंस को फ़्रैगमेंट#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 टूल का इस्तेमाल करता है और यह ऐप्लिकेशन, आर्टवर्क के पहुंचने की जानकारी देने वाले इवेंट को सुनने के लिए, यहां दिए गए लिसनर को कॉल करता है: अगर ऐप्लिकेशन, आर्टवर्क के पहुंचने की जानकारी देने वाले इवेंट को सुनने के लिए addArrivalListener का इस्तेमाल करता है, तो उसे आर्टवर्क के पहुंचने की जानकारी देने वाले इवेंट को मॉनिटर करने की ज़रूरत न होने पर, removeArrivalListener को भी कॉल करना चाहिए.

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 के मेमोरी मैनेजमेंट की खास जानकारी लेख पढ़ें.

मेमोरी लीक को डीबग करने के लिए, यह तरीका अपनाएं:

  1. समस्या को फिर से बनाएं. इसे डीबग करने के लिए, यह चरण ज़रूरी है.
  2. देखें कि मेमोरी का इस्तेमाल सही है या नहीं. इस बात की जांच कर लें कि जिस मेमोरी का इस्तेमाल लीक हो रहा है वह असल में आपके ऐप्लिकेशन को चलाने के लिए ज़रूरी मेमोरी न हो.
  3. बड़े लेवल पर डीबग करें. ऐसी कई सुविधाएं हैं जिनका इस्तेमाल डीबग करने के लिए किया जा सकता है. Android में मेमोरी से जुड़ी समस्याओं को डीबग करने में, तीन अलग-अलग स्टैंडर्ड टूल सेट मदद करते हैं: Android Studio, Perfetto, और Android Debug Bridge (adb) कमांड लाइन की सुविधाएं.
  4. अपने ऐप्लिकेशन की मेमोरी के इस्तेमाल की जांच करें. हीप डंप और ऐलोकेशन ट्रैकिंग पाएं और फिर इसका विश्लेषण करें.
  5. मेमोरी लीक ठीक करें.

नीचे दिए गए सेक्शन में, इन चरणों के बारे में पूरी जानकारी दी गई है.

पहला चरण: समस्या फिर से बनाना

अगर आपको समस्या दोबारा नहीं दिख रही है, तो सबसे पहले उन स्थितियों पर ध्यान दें जिनकी वजह से मेमोरी लीक हो सकती है. अगर आपको पता है कि समस्या को फिर से बना दिया गया है, तो सीधे हीप डंप पर नज़र डालें. हालांकि, अगर आपको ऐप्लिकेशन के स्टार्टअप या किसी अन्य समय पर ही हेप डंप मिलता है, तो हो सकता है कि आपने लीक को ट्रिगर करने की शर्तें चालू न की हों. इस समस्या को फिर से फिर से बनाने की कोशिश करते समय, अलग-अलग स्थितियों पर काम करने के बारे में सोचें:

  • किन सुविधाओं का सेट चालू है?

  • उपयोगकर्ता की कार्रवाइयों का कौनसा क्रम लीक होता है?

    • क्या आपने इस क्रम को चालू करने के लिए, कई बार कोशिश की है?
  • ऐप्लिकेशन ने लाइफ़साइकल की किन स्थितियों को पूरा किया है?

    • क्या आपने लाइफ़साइकल की अलग-अलग स्थितियों में कई बार कोशिश की है?

पक्का करें कि SDK टूल के सबसे नए वर्शन में, समस्या फिर से हल की जा सके. यह मुमकिन है कि पिछले वर्शन की समस्या, पहले ही ठीक कर ली गई हो.

दूसरा चरण: देखें कि ऐप्लिकेशन के लिए मेमोरी का इस्तेमाल तय सीमा के मुताबिक है या नहीं

हर सुविधा के लिए, ज़्यादा मेमोरी की ज़रूरत होती है. अलग-अलग स्थितियों को डीबग करते समय, इस बात का ध्यान रखें कि क्या यह उम्मीद के मुताबिक इस्तेमाल है या यह असल में मेमोरी लीक है. उदाहरण के लिए, अलग-अलग सुविधाओं या उपयोगकर्ता के टास्क के लिए, इन संभावनाओं पर विचार करें:

  • लीक होने की संभावना: एक से ज़्यादा बार-बार दोहराने की सुविधा की मदद से स्थिति को चालू करने से, समय के साथ मेमोरी का इस्तेमाल बढ़ता है.

  • मेमोरी का अनुमानित इस्तेमाल: स्थिति बंद होने के बाद, मेमोरी पर फिर से दावा किया जाता है.

  • मेमोरी का संभावित इस्तेमाल: कुछ समय के लिए मेमोरी का इस्तेमाल बढ़ता है और फिर वह बंद हो जाता है. ऐसा कैश मेमोरी की सीमा या मेमोरी के अन्य इस्तेमाल की वजह से हो सकता है.

अगर ऐप्लिकेशन के काम करने के तरीके में मेमोरी का इस्तेमाल होने की उम्मीद है, तो ऐप्लिकेशन की मेमोरी को मैनेज करके समस्या को हल किया जा सकता है. मदद पाने के लिए, अपने ऐप्लिकेशन की मेमोरी मैनेज करना लेख पढ़ें.

तीसरा चरण: हाई लेवल पर डीबग करना

मेमोरी लीक को डीबग करते समय, सबसे ऊपर से शुरू करें. इसके बाद, जब आपको समस्या का पता चल जाए, तो ड्रिल-डाउन करें. सबसे पहले, इनमें से किसी एक हाई-लेवल डिबगिंग टूल का इस्तेमाल करके, यह विश्लेषण करें कि समय के साथ कोई लीक तो नहीं हुआ है:

Android Studio का मेमोरी प्रोफ़ाइलर

यह टूल इस्तेमाल की गई मेमोरी का विज़ुअल हिस्टोग्राम दिखाता है. हीप डंप और ऐलोकेशन ट्रैकिंग को भी इसी इंटरफ़ेस से ट्रिगर किया जा सकता है. यह टूल डिफ़ॉल्ट सुझाव है. ज़्यादा जानकारी के लिए, Android Studio का मेमोरी प्रोफ़ाइलर देखें.

Perfetto Memory Counters

Perfetto आपको कई मेट्रिक ट्रैक करने पर सटीक कंट्रोल देता है और उसे एक ही हिस्टोग्राम में दिखाता है. ज़्यादा जानकारी के लिए, परफ़ेटो मेमोरी काउंटर देखें.

Perfetto का यूज़र इंटरफ़ेस

Android डीबग ब्रिज (adb) कमांड-लाइन की सुविधाएं

Perfetto की मदद से ट्रैक किए जा सकने वाले ज़्यादातर आंकड़े, adb कमांड-लाइन की सुविधा के तौर पर भी उपलब्ध होते हैं. इन आंकड़ों के बारे में सीधे तौर पर क्वेरी की जा सकती है. इसके कुछ अहम उदाहरण हैं:

  • Meminfo से आप किसी भी समय मेमोरी की पूरी जानकारी देख सकते हैं.

  • प्रोस्टेट से समय के साथ कुछ अहम एग्रीगेट किए गए आंकड़े मिलते हैं.

इस बारे में जानने के लिए एक ज़रूरी आंकड़ा यह है कि ऐप्लिकेशन को समय के साथ, ज़्यादा से ज़्यादा फ़िज़िकल मेमोरी फ़ुटप्रिंट (maxRSS) की ज़रूरत होती है. ऐसा हो सकता है कि MaxPSS उतना सटीक न हो. ज़्यादा सटीक जानकारी पाने के लिए, adb shell dumpsys procstats --help –start-testing फ़्लैग देखें.

आवंटन ट्रैकिंग

ऐलोकेशन ट्रैकिंग, स्टैक ट्रेस की पहचान करती है जहां मेमोरी को ऐलोकेट किया गया था और अगर उसे खाली नहीं किया गया था. यह चरण खास तौर पर तब काम आता है, जब नेटिव कोड में लीक को ट्रैक करना हो. यह टूल स्टैक ट्रेस की पहचान करता है. इसलिए, इस टूल की मदद से समस्या की असल वजह को तुरंत डीबग किया जा सकता है या समस्या को फिर से हल करने का तरीका पता लगाया जा सकता है. ऐलोकेशन ट्रैकिंग का इस्तेमाल करने का तरीका जानने के लिए, ऐलोकेशन ट्रैकिंग की मदद से नेटिव कोड में मेमोरी डीबग करना देखें.

चौथा चरण: हीप डंप की मदद से, अपने ऐप्लिकेशन के मेमोरी इस्तेमाल की जांच करना

मेमोरी लीक का पता लगाने का एक तरीका यह है कि अपने ऐप्लिकेशन का हीप डंप पाएं और फिर उसमें लीक की जांच करें. हीप डंप, किसी ऐप्लिकेशन की मेमोरी में मौजूद सभी ऑब्जेक्ट का स्नैपशॉट होता है. इसका इस्तेमाल, मेमोरी लीक और मेमोरी से जुड़ी अन्य समस्याओं का पता लगाने के लिए किया जा सकता है.

Android Studio, मेमोरी लीक होने की ऐसी गड़बड़ियों का पता लगा सकता है जिन्हें GC से ठीक नहीं किया जा सकता. हीप डंप को कैप्चर करने पर, Android Studio यह जांच करता है कि क्या कोई ऐसी गतिविधि या फ़्रैगमेंट है जिसे अब भी ऐक्सेस किया जा सकता है, लेकिन उसे पहले ही खत्म कर दिया गया है.

  1. हीप डंप को कैप्चर करें.
  2. मेमोरी लीक का पता लगाने के लिए, हीप डंप का विश्लेषण करें.
  3. मेमोरी लीक होने की समस्या ठीक करना.

जानकारी के लिए, नीचे दिए गए सेक्शन देखें.

हीप डंप कैप्चर करना

हीप डंप को कैप्चर करने के लिए, Android डीबग ब्रिज (adb) या Android Studio के मेमोरी प्रोफ़ाइलर का इस्तेमाल किया जा सकता है.

हीप डंप को कैप्चर करने के लिए adb का इस्तेमाल करना

adb का इस्तेमाल करके, हेप डंप कैप्चर करने के लिए यह तरीका अपनाएं:

  1. अपने Android डिवाइस को कंप्यूटर से कनेक्ट करें.
  2. कोई कमांड प्रॉम्प्ट खोलें और उस डायरेक्ट्री पर जाएं जहां adb टूल मौजूद हैं.
  3. हीप डंप को कैप्चर करने के लिए, इस निर्देश को चलाएं :

    adb shell am dumpheap my.app.name $PHONE_FILE_OUT

  4. हीप डंप वापस पाने के लिए, यह कमांड चलाएं:

    adb pull $PHONE_FILE_OUT $LOCAL_FILE.

हीप डंप को कैप्चर करने के लिए Android Studio का इस्तेमाल करना

Android Studio के मेमोरी प्रोफ़ाइलर टूल का इस्तेमाल करके हीप डंप को कैप्चर करने के लिए, Android हीपडंप कैप्चर करें सेक्शन में यह तरीका अपनाएं.

मेमोरी लीक का पता लगाने के लिए, हीप डंप का विश्लेषण करना

हीप डंप कैप्चर करने के बाद, उसका विश्लेषण करने के लिए Android Studio के मेमोरी प्रोफ़ाइलर का इस्तेमाल किया जा सकता है. ऐसा करने के लिए, यह तरीका अपनाएं:

  1. Android Studio में अपना Android प्रोजेक्ट खोलें.

  2. रन करें को चुनें. इसके बाद, डीबग करें कॉन्फ़िगरेशन चुनें.

  3. Android Profiler टैब खोलें.

  4. मेमोरी चुनें.

  5. हीप डंप खोलें को चुनें और अपनी जनरेट की गई हीप डंप फ़ाइल चुनें. मेमोरी प्रोफ़ाइलर, आपके ऐप्लिकेशन के मेमोरी के इस्तेमाल का ग्राफ़ दिखाता है.

  6. हीप डंप का विश्लेषण करने के लिए ग्राफ़ का इस्तेमाल करें:

    • उन ऑब्जेक्ट की पहचान करना जिनका अब इस्तेमाल नहीं किया जा रहा है.

    • उन ऑब्जेक्ट की पहचान करें जो बहुत ज़्यादा मेमोरी इस्तेमाल करते हैं.

    • देखें कि हर ऑब्जेक्ट कितनी मेमोरी का इस्तेमाल कर रहा है.

  7. इस जानकारी का इस्तेमाल करके, मेमोरी लीक के सोर्स का पता लगाएं या उसे कम करें और उसे ठीक करें.

पांचवां चरण: मेमोरी लीक की समस्या ठीक करना

मेमोरी लीक के सोर्स की पहचान करने के बाद, उसे ठीक किया जा सकता है. अपने Android ऐप्लिकेशन में मेमोरी लीक की समस्या को ठीक करने से, ऐप्लिकेशन की परफ़ॉर्मेंस और स्थिरता को बेहतर बनाने में मदद मिलती है. स्थिति के हिसाब से, जानकारी अलग-अलग हो सकती है. हालांकि, इन सुझावों से आपको मदद मिल सकती है:

अन्य डीबगिंग टूल

अगर इन चरणों को पूरा करने के बाद भी, आपको मेमोरी में मौजूद डेटा लीक होने की समस्या नहीं मिलती और उसे ठीक नहीं किया जाता, तो ये टूल आज़माएं:

ऐलोकेशन ट्रैकिंग की मदद से, नेटिव कोड में मेमोरी को डीबग करना

भले ही, सीधे तौर पर नेटिव कोड का इस्तेमाल न किया जा रहा हो, लेकिन कई सामान्य Android लाइब्रेरी ऐसा करती हैं. इनमें Google SDK टूल भी शामिल हैं. अगर आपको लगता है कि मेमोरी लीक, नेटिव कोड में है, तो इसे डीबग करने के लिए कई टूल उपलब्ध हैं. Android Studio या heapprofd (Perfetto के साथ भी काम करता है) की मदद से, ऐलोकेशन ट्रैकिंग करना, मेमोरी लीक की संभावित वजहों की पहचान करने का एक बेहतरीन तरीका है. साथ ही, आम तौर पर यह डीबग करने का सबसे तेज़ तरीका भी है.

ऐलोकेशन ट्रैकिंग का एक और फ़ायदा यह है कि इससे हीप में मौजूद संवेदनशील जानकारी को शामिल किए बिना ही नतीजे शेयर किए जा सकते हैं.

LeakCanary की मदद से, डेटा लीक की पहचान करना

LeakCanary एक बेहतरीन टूल है, जिसकी मदद से Android ऐप्लिकेशन में मेमोरी लीक की पहचान की जा सकती है. अपने ऐप्लिकेशन में LeakCanary का इस्तेमाल करने के तरीके के बारे में ज़्यादा जानने के लिए, LeakCanary पर जाएं.

Google SDK टूल से जुड़ी समस्याओं की शिकायत करने का तरीका

अगर आपने इस दस्तावेज़ में दिए गए तरीके आज़मा लिए हैं और आपको लगता है कि हमारे SDK टूल में मेमोरी लीक हो गई है, तो नीचे दी गई ज़्यादा से ज़्यादा जानकारी के साथ ग्राहक सहायता टीम से संपर्क करें:

  • मेमोरी लीक की समस्या को फिर से बनाने का तरीका. अगर इन चरणों को पूरा करने के लिए जटिल कोडिंग की ज़रूरत होती है, तो उस कोड को कॉपी करें जो समस्या को हमारे सैंपल ऐप्लिकेशन में कॉपी करता है. साथ ही, उन चरणों के बारे में भी बताया जा सकता है जो यूज़र इंटरफ़ेस (यूआई) में पूरे होने की वजह से लीक होने के लिए ज़रूरी है.

  • समस्या को हल करते हुए आपके ऐप्लिकेशन से कैप्चर किए गए हीप डंप. समय के हिसाब से दो अलग-अलग समय पर हीप डंप को कैप्चर करें, जिससे पता चलता है कि मेमोरी का इस्तेमाल काफ़ी बढ़ गया है.

  • अगर नेटिव मेमोरी लीक होने की आशंका है, तो heapprofd से एलोकेशन ट्रैकिंग आउटपुट शेयर करें.

  • गड़बड़ी की रिपोर्ट, जो लीक होने की स्थिति को फिर से बनाने के बाद ली जाती है.

  • किसी भी मेमोरी से जुड़े क्रैश के स्टैक ट्रेस.

    ज़रूरी जानकारी: आम तौर पर, स्टैक ट्रेस मेमोरी से जुड़ी समस्या को डीबग करने के लिए काफ़ी नहीं होते. इसलिए, पक्का करें कि आपने किसी अन्य तरह की जानकारी भी दी हो.