मैं Google से मेरा Android एप्लिकेशन के लिए निम्नलिखित अजीब दुर्घटना रिपोर्ट प्राप्त हुई है प्ले (आवंटन की राशि ध्यान दें बनाम मुक्त उपलब्ध स्थान) है -java.lang.OutOfMemoryError एंड्रॉयड 5.0 पर, एक 16k आवंटन की वजह से जब 5M उपलब्ध
java.lang.OutOfMemoryError: Failed to allocate a 16396 byte allocation with 5746272 free bytes and 111MB until OOM
at com.android.internal.util.FastXmlSerializer.<init>(FastXmlSerializer.java:55)
at com.android.internal.util.XmlUtils.writeMapXml(XmlUtils.java:183)
at android.app.SharedPreferencesImpl.writeToFile(SharedPreferencesImpl.java:597)
at android.app.SharedPreferencesImpl.access$800(SharedPreferencesImpl.java:51)
at android.app.SharedPreferencesImpl$2.run(SharedPreferencesImpl.java:512)
at android.app.SharedPreferencesImpl.enqueueDiskWrite(SharedPreferencesImpl.java:533)
at android.app.SharedPreferencesImpl.access$100(SharedPreferencesImpl.java:51)
at android.app.SharedPreferencesImpl$EditorImpl.commit(SharedPreferencesImpl.java:455)
at com.headuck.headuckblocker.bj.a(Unknown Source)
at com.headuck.headuckblocker.UpdateService.e(Unknown Source)
at com.headuck.headuckblocker.UpdateService.a(Unknown Source)
at x.a.onHandleIntent(Unknown Source)
at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.os.HandlerThread.run(HandlerThread.java:61)
मुझे एसओ पर कई आउटऑफमेमरी त्रुटि प्रश्नों के बारे में पता है, लेकिन ऐसा लगता है कि उनमें से कोई भी बाइट आवंटन के कारण उपलब्ध खाली स्थान से बहुत छोटा है।
उपयोगकर्ता एंड्रॉइड 5.0 पर गैलेक्सी एस 5 का उपयोग कर रहा था, और बताया कि गेम खेलने के दौरान इस तरह की दुर्घटनाएं होती हैं (और कौन से खेल कोई फर्क नहीं पड़ता) - जो मैं लेता हूं जब भी वह किसी अन्य मेमोरी गहन ऐप का उपयोग कर रहा है अग्रभूमि में और मेरी ऐप की पृष्ठभूमि सेवा चलाने के लिए निर्धारित है। Google Play रिपोर्ट होने के नाते, मेरे पास अधिक जानकारी प्राप्त करने का कोई अन्य साधन नहीं है।
मेरा सवाल यह है कि, संभवतः ऐसा होने का कारण क्या हो सकता है, और किसी भी उपाय से बचने के लिए कोई उपाय क्या हो सकता है?
कुछ पृष्ठभूमि (यदि यह प्रासंगिक है): उपर्युक्त दुर्घटना मेरी ऐप की समय-समय पर निर्धारित पृष्ठभूमि सेवा से है, जिसमें कोई यूआई/बिटमैप शामिल नहीं है। यह सब सर्वर से डेटा डाउनलोड कर रहा है और डेटाबेस/स्थिति अद्यतन कर रहा है। यह 5 साल पुरानी मशीनों में बहुत कम रैम के बिना किसी भी समस्या के बिना भाग गया, और आधुनिक एंड्रॉइड फोन के मानकों द्वारा स्मृति पर बहुत हल्का होना चाहिए। त्रुटि का उपरोक्त उदाहरण डेटाबेस अद्यतन के बाद एक बिंदु पर होता है और सेवा साझा वरीयता में अद्यतन स्थिति लिख रही है।
संपादित करें: केवल OutOfMemoryError in android on allocation 4Mb when 10Mb is free पढ़ें जो पोस्ट करने के बाद इस प्रश्न से जुड़ा हुआ था, लेकिन यह काफी असंभव प्रतीत होता है कि इस मामले में उपलब्ध खाली स्थान इतनी खंडित हो सकता है? क्या कोई अन्य संभावित कारण है?
https://github.com/facebook/fresco/issues/404 https://github.com/facebook/fresco/issues/159 –