ऐप्लिकेशन की मेमोरी ऑप्टिमाइज़ करें

मेमोरी, सॉफ़्टवेयर डेवलपमेंट के किसी भी एनवायरमेंट में एक अहम संसाधन होती है. हालांकि, यह मोबाइल ऑपरेटिंग सिस्टम पर और भी ज़्यादा अहम होती है, क्योंकि यहां फ़िज़िकल मेमोरी अक्सर सीमित होती है. खास तौर पर, यह समस्या उन डिवाइसों में ज़्यादा होती है जिनमें पहले से ही कम मेमोरी होती है. ऐसे डिवाइस, आम तौर पर Android (Go वर्शन) के साथ मिलते हैं. इन एनवायरमेंट में ऐप्लिकेशन को आसानी से चलाने के लिए, ऐप्लिकेशन की मेमोरी को ऑप्टिमाइज़ करने के कुछ तरीके हैं.

सबसे सही तरीके

कैश मेमोरी खाली करना

ऐसा हो सकता है कि बैकग्राउंड प्रोसेस को चालू रखने के लिए, ज़रूरत के मुताबिक मेमोरी उपलब्ध न हो. ऐसे में, अपने ऐप्लिकेशन की प्रोसेस से गैर-ज़रूरी मेमोरी को हटाने के लिए, onTrimMemory() का इस्तेमाल किया जा सकता है. अपने ऐप्लिकेशन के मौजूदा ट्रिम लेवल का पता लगाने के लिए, ActivityManager.getMyMemoryState(RunningAppProcessInfo) का इस्तेमाल करें. साथ ही, गैर-ज़रूरी संसाधनों को ऑप्टिमाइज़ करें या हटाएं. उदाहरण के लिए, एक्सप्रेशन, खोज, व्यू कैश या खोले जा सकने वाले एक्सटेंशन से, मेमोरी के गैर-ज़रूरी इस्तेमाल को कम किया जा सकता है. इससे, मेमोरी कम होने की वजह से ऐप्लिकेशन के क्रैश होने या एएनआर की समस्या आने की संख्या को कम किया जा सकता है.

टास्क शेड्यूल करना

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

मेमोरी लीक

Android Studio में Memory Profiler और Perfetto जैसे कई टूल उपलब्ध हैं. इनका इस्तेमाल खास तौर पर, आपके ऐप्लिकेशन में मेमोरी लीक का पता लगाने और उसे कम करने के लिए किया जाता है. हमारा सुझाव है कि आप इन टूल का इस्तेमाल करके, मेमोरी से जुड़ी संभावित समस्याओं का पता लगाएं और उन्हें ठीक करें. इससे आपके ऐप्लिकेशन के अन्य कॉम्पोनेंट, सिस्टम पर अतिरिक्त दबाव डाले बिना काम कर पाएंगे.

अन्य सुझाव

  • बड़ी इमेज या ड्रॉएबल, ऐप्लिकेशन में ज़्यादा मेमोरी इस्तेमाल करते हैं. मेमोरी के इस्तेमाल को कम करने के लिए, बड़े या पूरे रंग वाले बिटमैप की पहचान करें और उन्हें ऑप्टिमाइज़ करें.
  • Android (Go edition) के लिए ऐप्लिकेशन बनाते समय, GIF के लिए अन्य विकल्प चुनें, क्योंकि GIF बहुत ज़्यादा मेमोरी इस्तेमाल करते हैं.
  • WebP, pngcrush, और pngquant जैसे टूल का इस्तेमाल करके, इमेज की क्वालिटी कम किए बिना PNG फ़ाइल के साइज़ को कम किया जा सकता है. ये सभी टूल, इमेज की क्वालिटी को बनाए रखते हुए PNG फ़ाइल का साइज़ कम कर सकते हैं.
  • aapt टूल, बिल्ड प्रोसेस के दौरान res/drawable/ में मौजूद इमेज रिसॉर्स को बिना क्वालिटी में बदलाव किए कंप्रेस करके ऑप्टिमाइज़ कर सकता है. उदाहरण के लिए, aapt टूल, 256 से ज़्यादा रंगों की ज़रूरत न होने वाली ट्रू-कलर पीएनजी को कलर पैलेट वाली 8-बिट पीएनजी में बदल सकता है. ऐसा करने से, इमेज की क्वालिटी में कोई बदलाव नहीं होता, लेकिन मेमोरी का इस्तेमाल कम होता है.