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

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

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

Unity में मेमोरी का इस्तेमाल कम करना

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

इसलिए, Unity में मेमोरी ऑप्टिमाइज़ेशन के लिए, इंजन के इन व्यवहारों के हिसाब से तैयार किए गए तीन मुख्य पहलुओं का इस्तेमाल करना ज़रूरी है:

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

ज़्यादा जानकारी के लिए, Unity में मेमोरी ऑप्टिमाइज़ेशन लेख पढ़ें.