में बड़े कोर डेटा बैच डालने के साथ मेमोरी लीक मैं अपनी कोर डेटा इकाई में हजारों ऑब्जेक्ट्स डाल रहा हूं। मेरे पास एक NSManagedObjectContext
है और मैं ऑब्जेक्ट जोड़ने पर प्रबंधित ऑब्जेक्ट संदर्भ पर save()
पर कॉल कर रहा हूं। यह काम करता है लेकिन यह चल रहा है, जबकि स्मृति लगभग 27 एम से 400 मीटर तक बढ़ती रहती है। और आयात समाप्त होने के बाद भी यह 400 मीटर पर रहता है।स्विफ्ट
अतः बैच डालने और हर किसी के बारे में कई सवाल Efficiently Importing Data पढ़ने के लिए कहते हैं कर रहे हैं, लेकिन यह ऑब्जेक्टिव-सी में है और मैं दिक्कत यह है कि इस समस्या को हल स्विफ्ट में वास्तविक उदाहरण खोजने हो रहा है।
ऐसा लगता है कि आप अपने कोड में एक ही प्रबंधित ऑब्जेक्ट संदर्भ का उपयोग कर रहे हैं, न कि एक नया। – Mundi
प्रबंधित ऑब्जेक्ट संदर्भ उपरोक्त मेरे उदाहरण में प्रत्येक 'जबकि' लूप पर फिर से बनाया जाता है। 'While' लूप आवेषण के एक बैच का प्रतिनिधित्व करता है, इसलिए एक बैच एक ही प्रबंधित ऑब्जेक्ट संदर्भ का उपयोग करता है, लेकिन अगला बैच एक नया बनाता है। अतीत में मेरी समस्या यह थी कि मैंने संदर्भ को एक वर्ग संपत्ति बना दी और इसे कभी नहीं बदला। – Suragch
@Suragch: यह इस बात पर निर्भर करता है कि 'प्रबंधित ऑब्जेक्ट कॉन्टेक्स्ट' संपत्ति एप्लिकेशन प्रतिनिधि में कैसे कार्यान्वित की जाती है, लेकिन "सामान्य" कार्यान्वयन एक आलसी संपत्ति है जो ऐप के जीवनकाल के लिए एक बार संदर्भ बनाता है। उस मामले में आप उसी संदर्भ का पुन: उपयोग कर रहे हैं क्योंकि मुंडी ने कहा था। –