2013-06-09 13 views
9

से बाहर पहचानें हमारे ऐप्स ऐप स्टोर पर लाइव हैं। मैं कुछ उपयोगकर्ताओं को प्राप्त होने वाली स्मृति से दुर्घटनाओं को पहचानना चाहता हूं। मुझे समझ में आता है कि मेमोरी क्रैश से 100% पहचानने का कोई तरीका नहीं है। क्या एप्लिकेशन में कुछ तर्क करके DidReceiveMemoryWarning करके इन दुर्घटनाओं (एक बहुत बड़ी संभावना के साथ) को पहचानने का कोई तरीका है? (मैं विकास समय के दौरान एक्सकोड में इसे ढूंढने के बारे में बात नहीं कर रहा हूं, मैं कोड के बारे में बात कर रहा हूं जो वास्तविक उपयोगकर्ताओं से मेमोरी क्रैश से बाहर निकल जाएगा और फ़ाइल में कुछ लॉग इन करेगा)मेमोरी क्रैश (आईओएस)

+0

उपकरण का उपयोग करें (cmd + I) आवंटन का पालन करें। – Levi

+0

हालांकि यह एक तकनीकीता है: कम ऐप के कारण आपका ऐप समाप्त हो रहा है वास्तव में 'क्रैश' नहीं है (हालांकि यह आपके उपयोगकर्ता को ऐसा लगता है)। – occulus

+0

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

उत्तर

0

अपने ऐप में applicationWillTerminate संदेश देखें प्रतिनिधि। यह कहा जाता है कि यदि आप ऐप को सिस्टम द्वारा समाप्त कर देते हैं (उदा। कम स्मृति के कारण), लेकिन यदि उपयोगकर्ता होम कुंजी दबाकर सामान्य तरीके से ऐप छोड़ देता है। नोट: यदि आपका ऐप पृष्ठभूमि में है और मेमोरी खत्म हो जाती है, तो आपके ऐप को बिना किसी संदेश भेजे बिना मार दिया जाता है।

वाईएमएमवी, खासकर आईओएस के पुराने संस्करणों के साथ, और यह सुनिश्चित करने के लायक है कि उपरोक्त सटीक है।

this blog post पर छवियां काफी जानकारीपूर्ण हैं (हालांकि थोड़ा दिनांकित)।

अधिक जानकारी के लिए, यह आप लीक की संख्या आवेदन में पर दिखाई देगा और देखो How to know whether app is terminated by user or iOS (after 10min background)

+2

एप्लिकेशन होगा जब हर बार ऐप को स्मृति के कारण समाप्त कर दिया जाएगा (जब यह अग्रभूमि में है)? साथ ही, जब उपयोगकर्ता ऐप को पूरी तरह बंद कर देता है (इसे पृष्ठभूमि में नहीं ले जाता) तो यह भी कॉल किया जाएगा? – AJ222

-3

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

+2

आपने उससे पूछा कि एक अलग प्रश्न का उत्तर दिया गया है। उन्होंने अपनी पोस्ट में भी कहा "मैं विकास समय के दौरान एक्सकोड में इसे ढूंढने के बारे में बात नहीं कर रहा हूं"। – occulus

-2

वहाँ अच्छा तीसरे पक्ष के असली time.Below 2 में अपने iOS आवेदन के प्रदर्शन को ट्रैक करने के लिए उपलब्ध पुस्तकालयों में अच्छी तरह से इस तरह के वर्ग के लिए जाने जाते हैं कर रहे हैं:

  1. गूगल एनालिटिक्स
  2. Crittercism

वे ट्रैक और उपयोगकर्ताओं के उपकरणों से क्रैश रिपोर्ट को अपने खाते में भेजें। खुशी से वे कम स्मृति के कारण दुर्घटनाओं के बारे में आपको सूचित करते हैं!

https://developers.google.com/analytics/devguides/collection/ios/

https://www.crittercism.com/

आशा इस कुछ हद तक आपकी समस्या का समाधान ऊपर हो सकता है।

3

जब मैं किसी भी सेवा या पुस्तकालय है कि मुझे यह OOM ट्रैकिंग देने के लिए देख रहा था, मैं सिर्फ फेसबुक इंजीनियरिंग से इस लेख मिल सकता है:

https://code.facebook.com/posts/1146930688654547/reducing-fooms-in-the-facebook-ios-app/

विचार कारण निकालना क्यों एप्लिकेशन की जरूरत है लॉन्च करें, विभिन्न पहलुओं की जांच करें (जैसे कि ऐप पृष्ठभूमि में था, अगर कोई ऐप/ओएस अपडेट है, ...)।

पिछले सभी ऐप से बाहर निकलने के लिए अन्य सभी संभावित कारणों को छोड़कर, आप जान सकते हैं कि कारण स्मृति से पृष्ठभूमि या मेमोरी से बाहर अग्रभूमि है।

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

अगर कोई भी सेवा जानता है, तो कृपया इसे किसी टिप्पणी या एक नए उत्तर के साथ साझा करें।

संपादित करें:

मैं फेसबुक पोस्ट प्रक्रिया के एक कार्यान्वयन के साथ इस GitHub (https://github.com/jflinter/JRFMemoryNoodler) की खोज की है। मैंने अभी तक कोशिश नहीं की है, लेकिन हम इसे अपने ऐप्स में इसे आजमाने के लिए तैनात करेंगे।

+0

क्या आपने इसे आजमाया है? कोई सफलता? – Johanisma

+0

@ जोहानिस्मा, नहीं, हम इस पुस्तकालय (जेआरएफ मेमरी नूडलर) के साथ अपने ऐप्स को तैनात करने जा रहे थे, लेकिन निर्माण बंद करने से ठीक पहले, हमने इसे हटाने का फैसला किया। क्योंकि जब हमने ऐप क्रैश (विकास के दौरान) को मजबूर किया, तो हमें यकीन नहीं था कि यह टूल हमें विभिन्न ओओएम का पता लगाने में मदद कर सकता है (शायद हमने सही ढंग से दुर्घटनाओं की व्याख्या नहीं की है या यह अच्छी तरह से काम नहीं करता है)। अगर आपको कुछ मिलता है, तो इसे साझा करें क्योंकि अभी भी ओओएम है। –

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