2012-11-18 15 views
8

क्या कोई मुझे बता सकता है, किस प्रकार की स्मृति गंदा/निवासी है, और वे कहां से आती हैं? क्या निवासी मेमोरी का मतलब मैक ओएस की "वायर्ड मेमोरी" के समान है?आईओएस की निवासी और गंदे स्मृति क्या है?

यह है कि क्या मैं मैक ओएस स्मृति के बारे में देखा है:

वायर्ड: यह कोड और इस तरह के कर्नेल को दर्शाता है। स्मृति जो को कभी भी राम से बाहर नहीं ले जाना चाहिए। निवासी स्मृति के रूप में भी जानते हैं।

साझा किया गया: मेमोरी जो दो या दो से अधिक प्रक्रियाओं के बीच साझा की जाती है। दोनों प्रक्रियाएं इस स्मृति की मात्रा दिखाएंगी, इसलिए यह थोड़ा भ्रामक हो सकता है कि वास्तव में कितनी मेमोरी उपयोग में है।

रियल: यह 'असली' स्मृति एक आवेदन के लिए के रूप में task_info द्वारा सूचना दी उपयोग() है - शारीरिक पृष्ठों कि मौजूदा प्रक्रिया है की संख्या का एक मोटा गिनी जाती हैं। (आरएसआईजेई)

निजी: यह स्मृति है कि एक प्रक्रिया पूरी तरह से अपने पर उपयोग कर रही है जिसका उपयोग निवासी स्मृति में किया जाता है। (RPRVT)

वर्चुअल: प्रक्रिया है कि है कुछ भी करने के लिए मैप किया गया में पता स्थान की कुल राशि - कि चर या कुछ भी करने के लिए एक मनमाने ढंग से बड़ी जगह है, चाहे - यह वास्तविक वीएम उपयोग करने के लिए समानता नहीं है। (वीएसआईजेई)

सक्रिय: मेमोरी वर्तमान में सक्रिय के रूप में लेबल किया गया है और राम का उपयोग किया जाता है।

निष्क्रिय: "निष्क्रिय स्मृति का उपयोग नहीं किया जा रहा है और डिस्क पर संचित किया गया है यह रैम में रहेगा जब तक किसी अन्य अनुप्रयोग जरूरत अंतरिक्ष छोड़कर रैम में यह जानकारी अपने लाभ के लिए है अगर आप (या एक।। अपने कंप्यूटर का ग्राहक) बाद में वापस आओ। " - मैक ओएस एक्स सहायता

निशुल्क: वास्तव में किसी भी डेटा के बिना रैम की मात्रा उपलब्ध है।

उत्तर

27

यह लगभग एक वर्ष है और मैंने इसे समझ लिया।

स्वच्छ स्मृति

स्वच्छ स्मृति यादों कि निर्मित किया जा सकता है, iOS पर यह की स्मृति है:

  • प्रणाली ढांचे
  • अपने अनुप्रयोग के बाइनरी निष्पादन
  • स्मृति मैप की गई फ़ाइलों

यह भी ध्यान दें स्थिति है: जब आपका ऐप ढांचे से जुड़ा होता है, तो साफ मेमोरी फ्रेमवर्क बाइनरी के आकार से बढ़ेगी। लेकिन ज्यादातर समय, बाइनरी का केवल एक हिस्सा वास्तव में भौतिक स्मृति में लोड होता है।

गंदा स्मृति

सभी स्मृति कि स्वच्छ स्मृति नहीं है गंदा स्मृति है, गंदे स्मृति प्रणाली द्वारा निर्मित नहीं किए जा सकते हैं।

जब मेमोरी प्रेशर होता है, तो सिस्टम कुछ साफ मेमोरी को अनलोड कर देगा, जब स्मृति की आवश्यकता होती है, तो सिस्टम उन्हें फिर से बना देगा।

लेकिन गंदे स्मृति के लिए, सिस्टम उन्हें अनलोड नहीं कर सकता है, और आईओएस में कोई स्वैप तंत्र नहीं है, इसलिए गंदे स्मृति को हमेशा भौतिक स्मृति में रखा जाएगा, जब तक कि यह एक निश्चित सीमा तक न पहुंच जाए, तब आपकी ऐप समाप्त हो जाएगी और सभी मेमोरी इसके लिए सिस्टम द्वारा पुनर्नवीनीकरण किया जाता है।

आभासी स्मृति

virtual memory = clean memory + dirty memory. 

आभासी स्मृति इसका मतलब है कि सभी स्मृति अपने ऐप चाहते हैं।

निवासी स्मृति

resident memory = dirty memory + clean memory that loaded in physical memory 

निवासी स्मृति स्मृति वास्तव में अपने भौतिक स्मृति में लोड है, यह सब गंदा स्मृति और अपने स्वच्छ स्मृति के कुछ हिस्सों मतलब है।

निष्कर्ष

किसी भी समय, यह हमेशा सत्य है:

virtual memory == (clean memory + dirty memory) > resident memory > dirty memory 

आप भौतिक स्मृति को अपने एप्लिकेशन (जो प्रमुख कारण अपने ऐप कारण समाप्त कर रहा है ले जा रहा है के बारे में चिंता कर रहे हैं कम स्मृति के लिए), आपको मुख्य रूप से निवासी स्मृति पर ध्यान देना चाहिए।

7

निवासी स्मृति आपके ऐप के लिए आवंटित स्मृति है। गंदे स्मृति निवासी स्मृति है जिसे आईओएस में एक पेजिंग सिस्टम की कमी के कारण स्वचालित रूप से हटाया नहीं जा सकता है। मुझे यह जानकारी http://liam.flookes.com/wp/2012/05/03/finding-ios-memory/ पर मिली। फिर आपके द्वारा सूचीबद्ध स्मृति के प्रकारों के लिए, आईओएस में निवासी स्मृति वास्तविक या निजी के करीब है। मेरी समझ से, यह गंदे स्मृति है कि आपको आईओएस में सबसे ज्यादा चिंतित होना चाहिए क्योंकि यह निर्धारित कर सकता है कि यदि कम स्मृति वाली स्थिति है तो पृष्ठभूमि में निलंबित होने पर आपका ऐप मारा जाता है या नहीं।