मेमोरी का इस्तेमाल (बिना सोर्स फ़ाइल वाली आरएसएस मेमोरी + स्वैप मेमोरी)

मेमोरी का इस्तेमाल (बिना सोर्स फ़ाइल वाली आरएसएस मेमोरी और स्वैप मेमोरी), Android की ज़रूरी जानकारी वाली मेट्रिक है. इससे आपके ऐप्लिकेशन की मेमोरी के इस्तेमाल के बारे में पता चलता है.

बिना सोर्स फ़ाइल वाली मेमोरी, स्टोरेज पर मौजूद किसी फ़ाइल से जुड़ी नहीं होती. जैसे, हीप एलोकेशन और mmap-एलोकेट की गई मेमोरी. रेज़िडेंट सेट साइज़ (आरएसएस) एक प्रोसेस के लिए इस्तेमाल किए गए मेमोरी पेजों की कुल संख्या होती है. इसमें शेयर किए गए और शेयर नहीं किए गए, दोनों तरह के पेज शामिल होते हैं. ये पेज, फ़िज़िकल रैम में सेव होते हैं. बिना सोर्स फ़ाइल वाली मेमोरी के लिए, सिस्टम मेमोरी पर दबाव पड़ने पर पेजों को स्वैप स्पेस (या Android पर zRAM) में लिख सकता है.

कुल मिलाकर, मेमोरी के इस्तेमाल (बिना सोर्स फ़ाइल वाली आरएसएस मेमोरी + स्वैप मेमोरी) से पता चलता है कि आपके ऐप्लिकेशन के कुल कितने मेमोरी पेज, स्टोरेज में मौजूद किसी फ़ाइल से बैक अप नहीं लिए गए हैं. इसमें ऐसी मेमोरी भी शामिल है जिसे सिस्टम, स्वैप मेमोरी में भी सेव कर रहा है. बिना सोर्स फ़ाइल वाली आरएसएस और स्वैप मेमोरी को ट्रैक करने से, आपको अपने ऐप्लिकेशन की सही और न हटाई जा सकने वाली मेमोरी फ़ुटप्रिंट का पता चलता है.

ज़्यादा मेमोरी का इस्तेमाल करने वाले प्रोसेस की पहचान करना

Android की ज़रूरी जानकारी

Android की ज़रूरी जानकारी में, आपके ऐप्लिकेशन की मेमोरी के इस्तेमाल की जानकारी को इन प्रोसेस की स्थितियों के हिसाब से बांटा जाता है:

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

इन प्रोसेस की स्थितियों का onTrimMemory कॉलबैक से क्या संबंध है, यह समझने के लिए इवेंट के जवाब में मेमोरी रिलीज़ करने से जुड़े दिशा-निर्देश देखें.

Android की ज़रूरी जानकारी में, आपके ऐप्लिकेशन की मेमोरी के इस्तेमाल को रैम बकेट के हिसाब से भी बांटा जाता है. मेमोरी के इस्तेमाल की मेट्रिक को, रोज़ाना के पर्सेंटाइल की वैल्यू की टाइमलाइन के तौर पर दिखाया जाता है. साथ ही, 50वें और 90वें पर्सेंटाइल के लिए, रोज़ाना की सबसे नई वैल्यू भी दिखाई जाती है.

टेल स्क्यू का इस्तेमाल करके मेमोरी लीक की पहचान करना

मेमोरी लीक का पता लगाने के लिए, Android की ज़रूरी जानकारी में जाकर, सामान्य (P50) और आखिर के (P90) उपयोगकर्ताओं के बीच अंतर देखें. ऐसेट ब्लोट की वजह से, सभी पर्सेंटाइल में मेमोरी का इस्तेमाल एक जैसा होता है. वहीं, मेमोरी लीक की वजह से समय के साथ मेमोरी का इस्तेमाल बढ़ता जाता है. इससे, आखिर के डेटा पर काफ़ी असर पड़ता है.

आपको प्रोसेस के नाम के हिसाब से, अपनी P90 और P99 मेट्रिक की तुलना P50 बेसलाइन से करनी चाहिए. अगर P90 से P50 का अनुपात 3.5 गुना से ज़्यादा है, तो इसका मतलब है कि लंबे सेशन के दौरान मेमोरी लीक होने की संभावना है. कुछ मामलों में, मेमोरी के इस्तेमाल का बढ़ा हुआ अनुपात हमेशा मेमोरी लीक होने का संकेत नहीं देता. हालांकि, आपको यह तय करने के लिए खास वर्कफ़्लो का आकलन करना चाहिए कि मेमोरी के इस्तेमाल का बढ़ा हुआ अनुपात, उम्मीद के मुताबिक है या नहीं.