TLDR: Dalvik मेमोरी आवंटन के साथ अच्छा नहीं था और इससे Enum
अधिक मेमोरी का उपयोग करता है int
। Android लॉलीपॉप ने एआरटी के साथ Dalvik को बदल दिया जो समान सीमाओं से ग्रस्त नहीं है। इस प्रकार यह सिफारिश अब प्रासंगिक नहीं है।
लंबे उत्तर:
वाह! 8 साल, 5 जवाब और बाद में कई टिप्पणियाँ वास्तविक कारण अभी भी संबोधित नहीं किया गया है।
प्री-लॉलीपॉप Android के दिनों में, Dalvik वह प्रक्रिया थी जिसका उपयोग VM करता था। चूंकि उस दौरान उपयोग के लिए छोटी मात्रा में मेमोरी उपलब्ध थी, इसलिए डाल्विक के पास बहुत सारी मेमोरी-बाधाएँ थीं। स्मृति आवंटन के लिए डाल्विक को ढेर पर चलना पड़ा और जगह ढूंढनी पड़ी। ढेर भी समय के साथ खंडित हो जाता। डाल्विक डीफ़्रैग्मेन्ट नहीं कर सकता था, इसलिए यह समय के साथ आवंटित होगा और अंततः अंतरिक्ष से बाहर चला जाएगा।
जहाँ आप केवल स्याही की जरूरत है Enums से बचें
Dalvik दिनों से आता है क्योंकि Enum
a int
और a से बहुत बड़ा है और मेमोरी आवंटन बहुत महंगा है।
आज तेजी से आगे, Dalvik को ART द्वारा बदल दिया गया है। ART किटकैट में बाहर आया और लॉलीपॉप के बाद से डिफ़ॉल्ट है।
ART को मेमोरी से ऑप्टिमाइज़ करने के लिए नहीं बल्कि परफॉर्मेंस के लिए ऑप्टिमाइज़ करने के लिए बनाया गया था। यह आवंटन और संग्रह के लिए भी अनुकूलित है। इसका कारण है कि इसमें बड़ी वस्तुओं के लिए मेमोरी सेट है। सब कुछ एक ही ढेर में डालने के बजाय, और फिर सभी छोटे लोगों के बीच बड़ी वस्तुओं के लिए जगह खोजने के लिए, एआरटी सभी बड़ी वस्तुओं और बिटमैप को एक अलग ढेर में डालता है। और फिर छोटी वस्तुएं अलग-अलग ढेर में चली जाती हैं। साथ ही यह डिफ्रैगमेंट कर सकता है।
एआरटी के बाद, यदि आप Enum
एंड्रॉइड का उपयोग करते हैं तो परवाह नहीं करता है और यही कारण है कि सिफारिश अब चली गई है।
यह Google पर Chet Haase से आ रहा है। मैं उसकी Google I / O बात खोजने और पूरे वीडियो देखने की सलाह देता हूं। इसमें Android में बहुत सारी उपयोगी जानकारी और अंतर्दृष्टि है।