2015-10-12 9 views
11
नहीं

करता है, यह स्पष्ट है कि मैं एक स्मृति रिसाव है:Xcode स्मृति रिसाव से पता चलता है, लेकिन उपकरण जब मैं Xcode से मेरी अनुप्रयोग चलाने

enter image description here

जब मैं स्मृति बढ़ जाती है ViewController एक कस्टम पेश है, लेकिन जब मैं इसे खारिज करता हूं तो यह वापस नहीं जाता है।

तो मैं भी उपकरण 'आबंटन उपकरण का उपयोग कर जाँच की है, लेकिन यह एक अलग कहानी कहता है:

enter image description here

आप देख सकते हैं, उपकरण है कि ViewController, लेकिन स्मृति के उपयोग वापस करने के लिए चला जाता है जब मैं पेश spikes से पता चलता पिछले स्तर जब इसे खारिज कर दिया गया है।

मैंने कम से कम 15 बार अपना कोड चेक किया है और मुझे व्यक्तिगत रूप से कोई मेमोरी लीक नहीं मिलती है और इस प्रकार इंस्ट्रूमेंट्स से सहमत होती है।

deinit { 
    print("Deinnited \(id)") 
} 

और सांत्वना के लिए बाहर मुद्रित अपेक्षा के अनुरूप सभी वस्तुओं: मैं अपने सभी वस्तुओं है कि इतनी तरह आवंटित जायेगा में deinit समारोह को लागू किया।

क्या चल रहा था? मैं उपयोग कर रहा हूँ:

  • आईओएस 9.0
  • XCode संस्करण 7.0 (7A220)
  • स्विफ्ट 2,1

दोनों भागो और प्रोफाइल के स्कीमा "डिबग"

+0

बस जांच कर रहा है, लेकिन आप विचारों को कैसे खारिज करते हैं? क्या निष्क्रिय समय भी है? मैंने पाया है कि उपकरण केवल सॉफ्टवेयर पक्ष को दिखाता है। यह आपको वह राम नहीं दिखाएगा जो अभी तक साफ नहीं हुआ है। जब कोई निष्क्रिय समय नहीं होता है, तो ओएस राम को साफ नहीं कर सकता है। क्या आपके पास सिंगलटन है? या नकदी के लिए साझा उदाहरण? शायद एक मजबूत संदर्भ चक्र। सामान को कमजोर करने की कोशिश करें। बस विचारों को फेंक दें ... –

+0

यदि आप कई बार ओपन-क्लोज़ दोहराते हैं तो क्या आपको एक्सकोड में बढ़ती मेमोरी खपत दिखाई देती है? – Darko

+0

@ डार्को हां। मुझे एक्सकोड में बढ़ती स्मृति खपत दिखाई देती है लेकिन उपकरणों में नहीं –

उत्तर

3

बहुत बाद में है Google और अन्य मंचों पर शोध, यह एक्सकोड के साथ एक बग प्रतीत होता है।

+0

यह अभी भी संस्करण 7.2.1 –

2

अधिक टूल उपयोग अनुभव के बाद पिछले पाठ को अपडेट करना।

enter image description here

कुछ हाल ही Xcode 7.2.1 में उपकरण का उपयोग कर प्रयोगों के बाद, मैंने देखा है कि लीक चार्ट हमेशा काम नहीं करता। उपकरण और सिम्युलेटर की प्रक्रिया को मारने के बाद, फिर से चलाएं ... चार्ट दिखाई दिया। ऐसा लगता है कि अंतःविषय समस्या है और अभी तक कारण नहीं मिला है।

enter image description here

+0

के रूप में एक्सकोड में एक बग है यह मेरे लिए समस्या प्रकट नहीं करता है। मैं लीक्स प्रोफाइल टेम्पलेट के साथ प्रोफाइल करने में सक्षम था और मैंने पाया कि लीक नहीं हो रहे थे क्योंकि मैं हर बार पारित होने के साथ लीक चेक प्राप्त करना जारी रखता था। Xcode 7.x के अंतर्निहित मेमोरी प्रोफाइलर के साथ निश्चित रूप से कुछ ख़राब है। उपकरण दिखाते हैं कि "निरंतर बाइट्स" ऐप के जीवन पर स्थिर रहता है जबकि "कुल बाइट्स" बढ़ता जा रहा है। मेरा अनुमान है कि वे एक्सकोड में गलत फ़ील्ड का उपयोग कर रहे हैं क्योंकि यह उपकरण इंस्ट्रूमेंट्स में प्रोफाइलिंग करते समय दिखाए गए "कुल बाइट्स" मान के बहुत करीब है। –

+0

एक्सकोड 7.2.1 में इंस्ट्रूमेंट्स का उपयोग करके हाल के कुछ प्रयोगों के बाद, मैंने देखा कि लीक्स चार्ट हमेशा काम नहीं करता है। उपकरण और सिम्युलेटर की प्रक्रिया को मारने के बाद, फिर से चलाएं ... चार्ट दिखाई दिया। ऐसा लगता है कि अंतःविषय समस्या है और अभी तक कारण नहीं मिला है। –

5

यह एक अत्यंत कष्टप्रद Xcode बग या शायद एक फीचर :) यदि आप इसे सेब के नजरिए से देखते हैं।

मुझे आज इसका सामना करना पड़ा और यहां इसे हल करने का तरीका बताया गया है।

  1. प्रेस आवेदन नाम जहां योजना (अगले xcode में स्टॉप बटन के लिए) सेट

  2. चुनें 'संपादन योजना'

  3. चुनें 'रन' (पॉप के बाईं ओर -अप विंडो)

  4. 'विकल्प' चुनें (पॉप-अप विंडो के शीर्ष भाग)

  5. अचिह्नित 'enabl ई पश्व-अनुरेखन रिकॉर्डिंग '

नकारात्मक पक्ष यह है अगर तुम दुर्घटना कि पश्व-अनुरेखन अक्षम हो जाएगा है (पिछले चयन आप नीचे तक स्क्रॉल करना)। तो मुझे लगता है कि आप उस स्विच को टॉगल करना चाहते हैं जिस पर आप ध्यान केंद्रित करना चाहते हैं।

'प्रोफ़ाइल' योजना में बैकट्रैक सक्षम नहीं है इसलिए आपने डिबग नेविगेटर (रन स्कीम) का उपयोग करते समय मेमोरी लीक को देखा था, न कि यंत्रों (प्रोफ़ाइल योजना) में।

/एंडर्स।

+0

अरे ... बहुत धन्यवाद @ एंड्रेस सेड्रोनियस – user1872384

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