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

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

परिचय

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

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

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

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

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

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

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

देख लें कि आपने अपने Android ऐप्लिकेशन में ये सभी चीज़ें कर ली हैं:

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

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

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

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

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

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

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

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

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

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

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

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

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

पक्का करें कि एसडीके टूल के नए वर्शन में भी समस्या आ रही हो. ऐसा हो सकता है कि पिछले वर्शन की समस्या पहले ही ठीक हो गई हो.

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

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

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

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

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

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

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

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

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 यह देखता है कि कोई गतिविधि या फ़्रैगमेंट है या नहीं जिस पर अब भी पहुंचा जा सकता है, लेकिन उसे पहले ही खत्म कर दिया गया है.

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

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

हीप डंप को कैप्चर करें

हीप डंप कैप्चर करने के लिए, Android Debug Bridge (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 को चुनें. इसके बाद, डीबग कॉन्फ़िगरेशन चुनें.

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

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

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

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

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

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

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

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

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

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

डीबग करने के अन्य टूल

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

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

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

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

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

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

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

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

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

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

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

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

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

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