फोन को सुचारू मल्टीटास्किंग के लिए आवश्यक रैम की आदर्श मात्रा काफी बहस का विषय है। Apple अपने iPhones में छोटे आकार के साथ काम करता है, जो अक्सर Android समाधानों की तुलना में अधिक उपयोगी होता है। आपको iPhone पर किसी भी प्रकार का RAM मेमोरी प्रबंधन भी नहीं मिलेगा, जबकि Android के पास इसके लिए अपना स्वयं का समर्पित कार्य है।
उदाहरण के लिए, यदि आप सैमसंग गैलेक्सी फोन में जाते हैं नास्तवेंनि -> डिवाइस की देखभाल, आपको यहां एक रैम इंडिकेटर मिलेगा जिसमें यह जानकारी होगी कि कितनी जगह खाली है और कितनी जगह घेरी गई है। मेनू पर क्लिक करने के बाद, आप देख सकते हैं कि प्रत्येक एप्लिकेशन कितनी मेमोरी ले रहा है, और आपके पास यहां मेमोरी साफ़ करने का विकल्प भी है। रैम प्लस फ़ंक्शन भी यहां स्थित है। इसका अर्थ यह है कि यह आंतरिक स्टोरेज से एक निश्चित संख्या में जीबी काट देगा, जिसका उपयोग यह वर्चुअल मेमोरी के लिए करेगा। क्या आप iOS पर ऐसा कुछ कल्पना कर सकते हैं?
स्मार्टफोन रैम पर निर्भर होते हैं। यह उन्हें ऑपरेटिंग सिस्टम को स्टोर करने, एप्लिकेशन लॉन्च करने और उनके कुछ डेटा को कैश और बफर मेमोरी में स्टोर करने का काम करता है। इस प्रकार, रैम को इस तरह से व्यवस्थित और प्रबंधित किया जाना चाहिए कि एप्लिकेशन सुचारू रूप से चल सकें, भले ही आप उन्हें पृष्ठभूमि में छोड़ दें और थोड़ी देर बाद फिर से खोलें।
स्विफ्ट बनाम. जावा
लेकिन एक नया एप्लिकेशन शुरू करते समय, आपको इसे लोड करने और चलाने के लिए मेमोरी में खाली जगह की आवश्यकता होती है। अगर ऐसा नहीं है तो जगह खाली कर देनी चाहिए. इसलिए सिस्टम कुछ चल रही प्रक्रियाओं को बलपूर्वक समाप्त कर देगा, जैसे कि एप्लिकेशन जो पहले ही शुरू हो चुके हैं। हालाँकि, दोनों सिस्टम, यानी एंड्रॉइड और आईओएस, रैम के साथ अलग-अलग काम करते हैं।
iOS ऑपरेटिंग सिस्टम स्विफ्ट में लिखा गया है, और iPhones को वास्तव में बंद ऐप्स से उपयोग की गई मेमोरी को सिस्टम में वापस रीसायकल करने की आवश्यकता नहीं है। यह iOS के निर्माण के तरीके के कारण है, क्योंकि Apple का इस पर पूरा नियंत्रण है क्योंकि यह केवल उसके iPhones पर चलता है। इसके विपरीत, एंड्रॉइड जावा में लिखा गया है और कई उपकरणों पर इसका उपयोग किया जाता है, इसलिए इसे अधिक सार्वभौमिक होना चाहिए। जब एप्लिकेशन समाप्त हो जाता है, तो उसके द्वारा लिया गया स्थान ऑपरेटिंग सिस्टम में वापस आ जाता है।
मूल कोड बनाम जेवीएम
जब कोई डेवलपर एक iOS ऐप लिखता है, तो वे इसे सीधे कोड में संकलित करते हैं जो iPhone के प्रोसेसर पर चल सकता है। इस कोड को नेटिव कोड कहा जाता है क्योंकि इसे चलाने के लिए किसी व्याख्या या आभासी वातावरण की आवश्यकता नहीं होती है। दूसरी ओर, एंड्रॉइड अलग है। जब जावा कोड संकलित किया जाता है, तो इसे जावा बाइटकोड मध्यवर्ती कोड में परिवर्तित किया जाता है, जो प्रोसेसर-स्वतंत्र है। इसलिए यह विभिन्न निर्माताओं के विभिन्न प्रोसेसर पर चल सकता है। क्रॉस-प्लेटफ़ॉर्म संगतता के लिए इसके बड़े फायदे हैं।
बेशक, इसका एक नकारात्मक पहलू भी है। प्रत्येक ऑपरेटिंग सिस्टम और प्रोसेसर संयोजन को जावा वर्चुअल मशीन (जेवीएम) नामक वातावरण की आवश्यकता होती है। लेकिन मूल कोड जेवीएम के माध्यम से निष्पादित कोड से बेहतर प्रदर्शन करता है, इसलिए जेवीएम का उपयोग करने से एप्लिकेशन द्वारा उपयोग की जाने वाली रैम की मात्रा बढ़ जाती है। इसलिए iOS ऐप्स कम मेमोरी का उपयोग करते हैं, औसतन 40%। यही कारण है कि Apple को अपने iPhones को उतनी RAM से लैस करने की आवश्यकता नहीं है जितनी वह Android उपकरणों के साथ करती है।
मैं वास्तव में एक विशेषज्ञ नहीं हूं, लेकिन मैं अपने दृष्टिकोण का वर्णन एक ऐसे उपयोगकर्ता के दृष्टिकोण से करूंगा, जिसने 15 वर्षों तक एंड्रॉइड का उपयोग किया है और अब 2 महीने से iPhone 13 मिनी का उपयोग कर रहा है। 8जीबी मेमोरी वाले एंड्रॉइड पर (हाल ही में सैमसंग एस21, फ्लिप3) मैं आमतौर पर एक निश्चित समय के बाद पहले लॉन्च किए गए एप्लिकेशन पर लौटता हूं और यह अभी भी रैम में लोड था, इसलिए यह फिर से शुरू नहीं हुआ और मैं आसानी से वहां से शुरू कर सकता हूं जहां मैं था छोड़ दिया। दूसरी ओर, 8 जीबी मेमोरी के साथ भी, मैंने रैम को खाली करने के लिए सप्ताह में एक बार सभी एप्लिकेशन को "शॉट डाउन" कर दिया, क्योंकि पूर्ण मेमोरी के साथ सिस्टम धीमा होना शुरू हो गया था। मुझे iPhone पर धीमा होने से कोई समस्या नहीं है, लेकिन दूसरी ओर, मुझे यह कहना होगा कि लगभग समान एप्लिकेशन का उपयोग करते समय, इसके विपरीत, मेरे साथ नियमित रूप से ऐसा होता है कि जब मैं पहले लॉन्च किए गए एप्लिकेशन पर वापस लौटता हूं, यह फिर से पूरी तरह से लोड हो जाता है और मैं वहां से आसानी से जारी नहीं रख सकता जहां मैंने छोड़ा था।
कौन सा विकल्प बेहतर है? कहना मुश्किल है... एंड्रॉइड पर ऐप्स को खत्म करना और रैम को साफ़ करना दो क्लिक का मामला है। संपूर्ण एप्लिकेशन को iPhone पर फिर से लोड करना इतना समय लेने वाला नहीं है, इसलिए इससे कोई फर्क नहीं पड़ता... बेशक, iPhone पर अधिक RAM होना और Android की तरह मल्टीटास्किंग करना आदर्श होगा:-D
धिक्कार है, यह फिर से बेवकूफी है। एक बात के लिए, एंड्रॉइड लंबे समय से जावा में नहीं किया गया है, कोटलिन इसी के लिए है। कचरा संग्रहकर्ता मेमोरी का प्रभारी है, जो iOS में सबसे सरल है, जो अपनी कमियों के साथ भी मौजूद है। पूरी बात यह है कि जैसे ही आप ऐप्स को स्क्रीन से हटाते हैं, iOS उन्हें ख़त्म कर देता है। जब आप किसी प्रक्रिया का किल पीआईडी टाइप करते हैं तो यह लिनक्स की तरह ही मेमोरी को मुक्त कर देता है। इसीलिए ब्राउज़र खोलने और पिछले काम पर लौटने में इतना समय लगता है। यह लेख बिना किसी प्रोग्रामिंग ज्ञान वाले iOS कट्टरपंथी द्वारा एक X वर्ष पुराने लेख का शब्दशः अनुवाद है। हां, निश्चित रूप से, मेमोरी प्रबंधन मुख्य रूप से प्रोग्रामर की जिम्मेदारी है, एप्लिकेशन क्या करता है। यदि वह इस पर खांसता है, तो दुनिया में मेमोरी लीक हो जाती है और आपके पास एक्स जीबी मेमोरी हो सकती है और यह अभी भी बेकार है। और ऐसे समय में जब कई एप्लिकेशन केवल WebView हैं, यह बहुत सरल है, क्योंकि यह स्वयं वही खाता है जो यह कर सकता है। लेख बकवास है, कूड़ा है।
एंड्रॉइड अब जेवीएम का नहीं, बल्कि डीवीएम का उपयोग करता है। और इसके अलावा, यह इसे मूल निष्पादन योग्य में संकलित करता है
जावा अभी भी एंड्रॉइड में है।