2011-07-10 7 views
48

:उपकरण के साथ स्मृति उपयोग और प्रदर्शन को कैसे प्रोफाइल करें? सभी उपकरण ट्रेस टेम्पलेट, मैं का उपयोग कर प्यार की

  • Zombies जहां एक वस्तु EXEC_BAD_ACCESS त्रुटियों डीबगिंग के लिए, पर जारी किया गया हो रही है महान पता लगाने के लिए।
  • मेमोरी लीक का पता लगाने के लिए लीक।
  • कोर एनीमेशन डब्ल्यू रंग मिश्रित परत फ्रेम दर & पारदर्शी सबव्यू का पता लगाने के लिए, UITableView स्क्रॉलिंग को चिकनाई के लिए बढ़िया।

मैं हमेशा लोगों को अपने ऐप के मेमोरी उपयोग & प्रदर्शन को प्रोफ़ाइल करने के लिए कहता हूं।

  1. मुझे स्मृति उपयोग & प्रदर्शन क्यों प्रोफ़ाइल देना चाहिए? मेरा ऐप ठीक चलाता है।
  2. मैं यह कैसे कर सकता हूं?

मैंने आवंटन का उपयोग किया है और देखें कि मेरा आईफोन ऐप कुल आवंटित स्मृति में 1 एमबी से शुरू होता है और सामान्य उपयोग के बाद 5 एमबी तक बढ़ता है। आईफोन पर मेमोरी उपयोग की बहुत अधिक मात्रा क्या है? आईपैड? मैक?

उत्तर

73

whys का जवाब देने के लिए, मेमोरी उपयोग प्रोफाइलिंग विशेष रूप से आईओएस ऐप्स के लिए महत्वपूर्ण है क्योंकि आईफोन और आईपैड मैक की तुलना में बहुत कम रैम है। आईफोन 4 में 512 एमबी रैम है, लेकिन पहले के संस्करणों में 256 या 128 एमबी थी। रैम में फैक्टर ओएस का उपयोग करता है और मल्टीटास्किंग करता है, और आपके ऐप में बर्बाद करने के लिए बहुत अधिक रैम नहीं है, इसलिए यह जानना महत्वपूर्ण है कि आपका ऐप कितना मेमोरी उपयोग करता है।

प्रोफाइलिंग प्रदर्शन कुछ ऐसा होता है जो आप आमतौर पर करते हैं जब आपका ऐप धीरे-धीरे चल रहा है। अपने कोड में धीमे धब्बे ढूंढने के लिए प्रोफाइल करें ताकि आप कोड को तेज़ी से चला सकें। यदि आपका ऐप ठीक चलता है, तो आपको प्रदर्शन के लिए प्रोफाइल करने की आवश्यकता नहीं है।

कैसे जवाब देने के लिए, स्मृति उपयोग को मापने के लिए आवंटन उपकरण का उपयोग करें। ऑल ऑलोकेशन श्रेणी में लाइव बाइट्स कॉलम आपको बताता है कि आपका ऐप वर्तमान में किस मेमोरी का उपयोग कर रहा है। आवंटन उपकरण के हेपशॉट विश्लेषण आपके ऐप में स्मृति वृद्धि को मापता है। हीपशॉट विश्लेषण करने के लिए कूद पट्टी के बाईं तरफ मेनू का प्रयोग करें।

टाइम प्रोफाइलर उपकरण प्रदर्शन के लिए आपके ऐप को प्रोफाइल करता है। टाइम प्रोफाइलर उपकरण का उपयोग करने का कठिन हिस्सा परिणाम की व्याख्या कर रहा है। टाइम प्रोफाइलर उपकरण आपको यह बताने वाला नहीं है कि आपका ऐप फंक्शन एक्स में 75% समय व्यतीत करता है। आपको अपने कोड में धीमी धब्बे खोजने के लिए डेटा को खोदना होगा।

स्वीकार्य स्मृति उपयोग के संबंध में, यह उन डिवाइसों पर निर्भर करता है जिन्हें आप समर्थन देना चाहते हैं और ऐप। 100 एमबी रैम का उपयोग कर एक्सकोड की तरह एक ऐप ठीक होगा, लेकिन एक पेज दस्तावेज़ के लिए 100 एमबी का उपयोग कर टेक्स्ट एडिट जैसे ऐप एक समस्या होगी। आईओएस ऐप के लिए 5 एमबी समस्या नहीं होनी चाहिए।

+2

इतना व्यापक उत्तर देने के लिए धन्यवाद! :) – ma11hew28

+6

मुझे आवंटन उपकरण गुमराह करने के लिए मिला है जब यह आता है कि मेरा ऐप वास्तव में कितनी मेमोरी का उपयोग कर रहा है। यह वास्तविक ज्ञापन उपयोग से बहुत नीचे संख्या देता है। मेमोरी मैनेजर उपकरण आपको वास्तविक मेमोरी कॉलम में आपके ऐप का उपयोग करने वाली वास्तविक मात्रा की स्मृति देगा। मैं एक ओपनजीएल गेम विकसित कर रहा था और कम स्मृति चेतावनी को बाएं और दाएं मिल रहा था। आवंटन ने कहा कि मैं केवल 12 एम रैम का उपयोग कर रहा था, मेमोरी मैनेजर ने कहा कि मैं 100 एम का उपयोग कर रहा था। तो यह तूम गए वहाँ। – Ian

+3

@Ian देखें http://stackoverflow.com/a/8797272/287403 ऐसा प्रतीत होता है कि लाइव बाइट्स अधिक सटीक हैं, क्योंकि स्मृति उपकरण में 'वास्तविक स्मृति' कॉलम आपके द्वारा बहुत पहले रिलीज़ किए गए ब्लॉक दिखाता है और ओएस हैन पुनः दावा नहीं किया गया। यह भी देखें कि http://stackoverflow.com/a/7574959/287403 जिसमें मेरा मानना ​​है कि समग्र बाइट्स को 'असली स्मृति' के करीब लाइन करना चाहिए –

7

मार्क के जवाब में कुछ टिप्पणियों को संबोधित करने के लिए:

आवंटन को लाइव बाइट्स ओपन बनावट स्मृति है, जो CALayer/UIViews द्वारा प्रयोग किया जाता है शामिल नहीं है। यह मेमोरी मॉनिटर के साथ असहमति का स्रोत है।

इस सवाल का जवाब यहाँ देखें: Understanding the memory consumption on iPhone

3

स्मृति वास्तव में डिवाइस के भौतिक स्मृति में लोड VM Tracker Instrument में Resident Memory है।

Allocation Instrument केवल स्मृति malloc/[NSObject alloc] द्वारा बनाई गई और कुछ ढांचे बफर के निशान, उदाहरण के लिए, decompressed छवि बिटमैप Allocation Instrument में शामिल नहीं है लेकिन यह हमेशा अपनी स्मृति के सबसे लेता है।

कृपया डब्ल्यूडब्ल्यूडीसी 2012 सत्र 242 आईओएस ऐप प्रदर्शन देखें: ऐप्पल से जानकारी प्राप्त करने के लिए मेमोरी।

संबंधित मुद्दे