2012-11-13 17 views
5

साथ नहीं मैं एक बहुत बड़ा तुल्यकालन प्रक्रिया है जिसमें मैं डाउनलोड करने और अनज़िप 400-500 XML फ़ाइलों और फिर इसे पार्स है। इस डेटा के साथ मैं RestKit API पर बहुत सारी मूल डेटा ऑब्जेक्ट्स बनाने जा रहा हूं। शुरुआत में, मुझे 450 एमबी + के लाइव बाइट्स के साथ मेमोरी चेतावनी मिली क्योंकि मैंने ऑटोरेलीज पूल का उपयोग नहीं किया और केवल अंत में कोर डेटा को सहेजने की कोशिश की।मेमोरी डिवाइस पर चेतावनी, उपकरण

मुझे लगता है कि तय, कोर डेटा के लिए अक्सर अब बचत और @autoreleasepool ब्लॉकों का उपयोग कर। जब मैं अपने ऐप को उपकरणों के साथ चला रहा हूं, तो मैं देख सकता हूं कि लाइव बाइट केवल 20 एमबी -30 एमबी होने के नाते, हमेशा स्मृति जारी करते हैं और कभी आकार नहीं लेते हैं। प्रक्रिया बस काम करता है। लेकिन जब मैं उपकरण के बिना ऐप शुरू करता हूं, तो एक दृश्य फ़ाइलों के बाद मुझे Memory Warning मिलता है। बाद में ऐप दुर्घटनाओं पर।

साथ और instruments उपकरण के बिना एप्लिकेशन चला रहे के बीच differene क्या है? यह अलग-अलग परिणामों में क्यों समाप्त होता है?

+2

एक अंतर यह है कि आमतौर पर उपकरण के साथ की रूपरेखा का कारण बनता है एक रिलीज के निर्माण, किए जाने के लिए है, जबकि Xcode के माध्यम से चल एक डीबग बिल्ड किए जाने के लिए कारण बनता है। यह सुनिश्चित नहीं है कि यह इस स्थिति को कैसे प्रभावित कर सकता है। – borrrden

+3

जैसे आप डिबग कॉन्फ़िगरेशन में लाश सक्षम कर सकते हैं लेकिन रिलीज़ कॉन्फ़िगरेशन – hooleyhoop

+0

लोगों को नहीं - मुझे बस इस प्लेटफ़ॉर्म से प्यार है। मुझे अभी नहीं पता था कि उपकरण रिलीज बिल्ड का उपयोग कर रहे हैं। क्योंकि मेरी ऑब्जेक्ट्स बड़ी है कि ज़ोंबी सक्षम एक असफल था। रिलीज का उपयोग करते समय मैं सबकुछ एक आकर्षण की तरह काम कर रहा हूं। Pls इसे एक उत्तर के रूप में देते हैं ताकि मैं इसे स्वीकार कर सकूं। आप नहीं जानते कि इससे मुझे कितना मदद मिली।बहुत बहुत धन्यवाद :) – NDY

उत्तर

4

मैं क्योंकि मैं बहुत खुश हूँ कि मैं इस पेज में आए हूँ इस जवाब जोड़ रहा।

@borrrden सुझाया गया आंशिक रूप से सच है। जब आप प्रोफाइल करते हैं तो आप किन बिल्ड सेटिंग्स का उपयोग करेंगे, इसे कॉन्फ़िगर कर सकते हैं। इसे कॉन्फ़िगर करने के लिए, गोटो एक्सकोड और संपादन योजना संवाद खोलें और बाएं मेनू प्रोफ़ाइल XXX.app में चुनें। आप देखेंगे कि आप बिल्ड कॉन्फ़िगरेशन (या तो डीबग या रिलीज़) चुन सकते हैं।

enter image description here

क्या @hooleyhoop टिप्पणी की अधिक समाधान खोजने के लिए महत्वपूर्ण था। यहां तक ​​कि यदि आपकी प्रोफ़ाइल बिल्ड कॉन्फ़िगरेशन डीबग पर सेट है, तो अभी भी Xcode के भीतर प्रोफाइलिंग और डिफ़ॉल्ट रन के बीच एक अंतर है। अनुभाग में डायग्नोस्टिक्स निर्दिष्ट कर सकते हैं। वहीं, वहाँ ज़ोंबी मेमोरी मैनेजमेंट तहत ऑब्जेक्ट्स सक्षम कहा जाता है एक विकल्प है। सुनिश्चित करें कि यह विकल्प अनचेक है।

enter image description here

यह डाइग्नोसिस चलाने सेटिंग्स जबकि रूपरेखा उपयोग नहीं किया जाता। आपके द्वारा अनुभव किए जा रहे व्यवहार के लिए यह स्पष्टीकरण है। प्रोफ़ाइल अनुभाग पर भी डायग्नोस्टिक टैब नहीं है।


परिणाम मेरे खेल (गंप) साथ मुख्य मेनू में कुछ नहीं कर रहे ज़ोंबी ऑब्जेक्ट्स सक्षम के 5 मिनट के बाद दुर्घटनाग्रस्त हो गया है। एक बार जब मैंने ज़ोंबी ऑब्जेक्ट्स अक्षम कर दिया, तो मेरा गेम तब तक चलता है जब तक मुझे अनंत समय के लिए पता चलता है। 45 मिनट के बाद, अभी भी कोई मेमोरी चेतावनी नहीं है।

+2

ऐसा इसलिए है क्योंकि लाश को मृत वस्तुओं को संदेश भेजते समय ट्रैक करने में सक्षम होने के उद्देश्य से सभी वस्तुओं को लीक करने में सक्षम बनाता है। – JustSid

+0

ठीक है, यही कारण है कि। मुझे यकीन नहीं था। उसके लिए धन्यवाद। मुझे लगता है कि यह ऐसा कुछ है जिसे आसानी से भुलाया जा सकता है कि यह अभी भी चालू है। –

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