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

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

शुरुआती जानकारी

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

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

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

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

मेमोरी लीक होने से बचाएं

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

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

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

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

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

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

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

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

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

उदाहरण के लिए, मान लें कि आपका ऐप्लिकेशन, नेविगेशन 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 दस्तावेज़ में अपने ऐप्लिकेशन की मेमोरी मैनेज करना देखें.

संसाधनों को रिलीज़ करने के लिए, लाइफ़साइकल के तरीकों को फ़ॉरवर्ड करें

अगर आपका ऐप्लिकेशन, नेविगेशन या Maps SDK टूल का इस्तेमाल करता है, तो लाइफ़साइकल के तरीकों (बोल्ड में दिखाए गए) को navView पर फ़ॉरवर्ड करके, रिसॉर्स रिलीज़ करना न भूलें. नेविगेशन SDK टूल में NavigationView या मैप या नेविगेशन 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 डीबग ब्रिज (adb) कमांड लाइन की सुविधाएं.
  4. अपने ऐप्लिकेशन में मेमोरी के इस्तेमाल की जांच करना. एक हीप डंप और ऐलोकेशन ट्रैकिंग पाएं और फिर उसका विश्लेषण करें.
  5. मेमोरी लीक को ठीक करना.

इन सेक्शन में इन चरणों के बारे में विस्तार से बताया गया है.

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

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

  • कौनसी सुविधाएं चालू हैं?

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

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

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

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

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

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

  • डेटा लीक होने की संभावना: कई बार दोहराव से नई स्थिति को चालू करने पर, समय के साथ मेमोरी का इस्तेमाल बढ़ सकता है.

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

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

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

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

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

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

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

परफ़ेटो मेमोरी काउंटर

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

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

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

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

  • Meminfo से, आपको किसी एक समय पर, मेमोरी की ज़्यादा जानकारी देखने की सुविधा मिलती है.

  • Procstats, समय के साथ कुछ ज़रूरी एग्रीगेट किए गए आंकड़े देता है.

ऐप्लिकेशन को समय के साथ, ज़्यादा से ज़्यादा फ़िज़िकल मेमोरी फ़ुटप्रिंट (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. Run चुनें. इसके बाद, DebugView कॉन्फ़िगरेशन को चुनें.

  3. Android प्रोफ़ाइल टैब खोलें.

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

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

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

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

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

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

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

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

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

डीबग करने के दूसरे टूल

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

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

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

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

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

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

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

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

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

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

  • अगर नेटिव मेमोरी लीक होने की उम्मीद हो, तो हीप-प्रोफ़ाइल से मिला ऐलोकेशन ट्रैकिंग आउटपुट शेयर करें.

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

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

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