मुझे यह समस्या है। मेरे पास कोर डेटा में छवियों का डेटाबेस है। मैं सभी छवियों (लगभग 80 एमबी) लाता हूं और एक एनएसएमयूटेबलएरे में डालता हूं। वस्तुओं को सही ढंग से गलती कर रहे हैं:कोर डेटा मेमोरी उपयोग और मेमोरी चेतावनी
NSArray *fetchResults = [self.managedObjectContext executeFetchRequest:request error:&error];
self.cache = [NSMutableArray arrayWithArray:fetchResults];
for (ImageCache *imageObject in self.cache) {
NSLog(@"Is fault? %i", [imageObject isFault]);
}
लॉग पढ़ना, मुझे लगता है कि वस्तुओं सब सही ढंग से हालांकि गलती कर रहे हैं, उपकरण का उपयोग कर, मुझे लगता है कि स्मृति के 80MB किया जाता है। मुझे लगता है कि यही कारण है कि कोर डेटा इसके परिणामों को कैश करता है, और इसकी आवश्यकता होने पर स्मृति को मुक्त करना चाहिए। लेकिन (और यह मेरी "समस्या" है), अगर मैं स्मृति चेतावनी अनुकरण करता हूं, तो कुछ भी नहीं होता! 80 एमबी वहां बनी हुई है। (उदाहरण)
ग्राफ़ श्रेणी लाइव बाइट्स # लिविंग # क्षणभंगुर कुल मिलाकर बाइट्स # कुल मिलाकर # आवंटन (नेट/कुल मिलाकर) 0 Malloc 176,00: -
उपकरणों को देखते हुए आवंटन, 80MB कई Malloc द्वारा किया जाता है केबी 8,59 एमबी 50 57 18,39 एमबी 107% 0.00,% 0.00 0 मॉलोक 200,00 केबी 8,20 एमबी 42 460 98,05 एमबी 502% 0.00,% 0.04 0 मॉलोक 168,00 केबी 7,05 एमबी 43 19 10,17 एमबी 62% 0.00% 0.00
इस पूरी कॉल ट्री की एक छवि के लिए एक लिंक है: https://www.dropbox.com/s/du1b5a5wooif4w7/Call%20Tree.png
कोई विचार? धन्यवाद
शायद कोर डेटा मेमोरी चेतावनी स्तर 2 पर स्मृति को मुक्त करता है? क्या आपके परिदृश्य के साथ कम मेमोरी क्रैश उत्पन्न करना संभव है? – brigadir
क्या मेमोरी चेतावनी स्तर 2 अनुकरण करने के लिए कोई "जादू विधि" है? या "बस" मुझे स्मृति का उपभोग करना है? – LombaX
मुझे कोई सिमुलेशन विधि नहीं पता है। आपको एक और "भारी" ऐप (उदाहरण के लिए ऐपस्टोर) चलाएं, अपने ऐप को पृष्ठभूमि में रखें और कंसोल लॉग और इंस्ट्रूमेंट्स मेमोरी चार्ट को ट्रैक करना चाहिए। कंसोल में 'स्तर 2' चेतावनी का उल्लेख किया जाएगा - इसलिए आपको उस पल में मेमोरी चार्ट देखना चाहिए। – brigadir