2013-10-02 8 views
5

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

मेरा गेम पूरी तरह से प्रक्रियात्मक रूप से जेनरेट किया गया है और इसके लिए कोई संपत्ति की आवश्यकता नहीं है, यह केवल रंगों के साथ मैप किए गए कुछ बहुभुजों का उपयोग करता है, इसलिए कोई बनावट नहीं है। मुझे उम्मीद है कि इसे केवल दो एमबी चलाने की आवश्यकता होगी (जो यह शुरू होता है) लेकिन यह बढ़ता रहता है।

अब, मैंने कुछ दिलचस्प देखा है ... अधिकांश डेटा का उपयोग करता है IOAccelResource नामक एक प्रविष्टि है। जो अजीब है क्योंकि मैं किसी भी एक्सेलेरोमीटर/जीरोस्कोप/कंपास डेटा का उपयोग नहीं करता हूं। मेरे पास प्रोजेक्ट में संदर्भित कोरमोशन फ्रेमवर्क भी नहीं है।

डेटा का दूसरा प्रमुख उपयोग चार मॉलॉक्स का संग्रह है जो बढ़ते रहते हैं। कुछ और हैं जो तुलनात्मक रूप से वही रहते हैं।

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

अन्य सभी प्रविष्टियां बहुत छोटी हैं और एक ही बिंदु के आसपास उतार-चढ़ाव करती हैं, या बस वही रहती हैं। Entries

किसी भी सलाह:

यहाँ परेशानी प्रविष्टियों का एक स्क्रीनशॉट है?

उत्तर

8

यदि आप "कुल मिलाकर बाइट्स" या "ओवरवॉल (तत्व)" का जिक्र करते रह रहे हैं, तो यह आमतौर पर एक समस्या नहीं है क्योंकि यह कुल स्मृति उपयोग को ट्रैक करता है (दूसरे शब्दों में, यह जारी करने के लिए खाता नहीं है याद)।

आपको "लाइव बाइट्स" और "# लिविंग (तत्व)" क्या देखना चाहिए और यह सुनिश्चित करना कि यह आपकी अपेक्षाओं के अनुरूप है।

आप यह भी देखेंगे कि अगर "कुल मिलाकर बाइट्स" बढ़ता रहता है, तो यह आपके ऐप को क्रैश नहीं करेगा। दूसरी तरफ, यदि "लाइव बाइट्स" बढ़ती रहती है, तो यह आपके ऐप को क्रैश कर देगा।

ऐप्पल ने महसूस किया है कि उपकरण प्रोफ़ाइल में बहुत अधिक जानकारी है और यही कारण है कि xCode5 में, इसने महत्वपूर्ण जानकारी को xCode में सीधे डिस्टिल्ड किया है: अपना ऐप चलाने पर, 6 वें आइकन (डीबग नेविगेटर) पर क्लिक करें नेविगेटर (एक्सकोड का बायां कॉलम)। आपको मेमोरी इंडिकेटर दिखाई देगा जो केवल "लाइव बाइट्स" ट्रैक करेगा।

यदि आपके पास डब्ल्यूडब्ल्यूडीसी 2013 वीडियो तक पहुंच है, तो सत्र 410 देखें: स्मृति समस्याओं को ठीक करना।

उम्मीद है कि इससे मदद मिलती है।

+0

आह, धन्यवाद आदमी! मैं वास्तव में चिंतित था कि कुछ गंभीर चल रहा था। ऐसा प्रतीत होता है कि मेरे पास सही स्मृति प्रबंधन है! – Bananable

+11

मुझे यह मामला नहीं मिला है। जब मैं यंत्रों को देखता हूं, तो मेरा ऐप सही मेमोरी प्रबंधन दिखाता है। जब मैं एक्सकोड में मेमोरी ग्राफ को देखता हूं, तो यह दिखाता है कि मेरा ऐप लगातार 1.5 एमबी मेमोरी आवंटित कर रहा है जिसे टाइमर आग लगने पर हर बार रिलीज़ नहीं किया जा रहा है। मैं इंस्ट्रूमेंट्स के निष्कर्षों को स्वीकार करना चाहता हूं और आगे बढ़ना चाहता हूं, लेकिन मुझे चिंता है। – CMVR

+4

वही है: एक्सकोड मेमोरी गेज बढ़ता जा रहा है और बढ़ रहा है, लेकिन आवंटन + लीक यंत्र इंगित करते हैं कि स्मृति ठीक तरह से प्रबंधित की जा रही है। यकीन नहीं है कि मुझे क्या निष्कर्ष निकालना चाहिए ... –

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