पर उपलब्ध मेमोरी निर्धारित करना तो एंड्रॉइड पर चुनौतियों में से एक है विभिन्न डिवाइस विनिर्देशों (विशेष रूप से डिवाइस मेमोरी में)।एंड्रॉइड
मैंने अपने मॉडल ऑब्जेक्ट्स को आलसी लोड फैशन में जावा SoftReferences
का व्यापक रूप से उपयोग करने के लिए लिखा है, इसलिए वीएम डेटा मॉडल के वर्तमान में उपयोग किए जाने वाले हिस्सों को ट्रिम करने के लिए स्वतंत्र नहीं है क्योंकि यह उपयुक्त दिखता है और उन्हें केवल आवश्यकतानुसार पुनर्निर्मित किया जाता है।
हालांकि, SoftReferences
के साथ अभ्यास में एक चुनौती यह है कि वे कमजोर रूप से संदर्भित होने के कुछ सेकंड के भीतर साफ़ हो जाते हैं क्योंकि वीएम स्मृति पर कम होने तक आसपास लटकने के विपरीत होता है, इसलिए वे मॉडल को अनुमति देने के मामले में अच्छी तरह से काम करते हैं ट्रिम करने के लिए, लेकिन वे भी काम नहीं करते हैं, इसका मतलब है कि इसका मतलब यह नहीं है कि स्मृति में कुछ भी नहीं है। आदर्श रूप से बहुत सारी मेमोरी वाले डिवाइस पर, आप उपयोगकर्ता को स्मृति में वस्तुओं को रखने से लाभ उठाने देंगे।
परिणामस्वरूप, एलआरयू तंत्र के साथ SoftReferences
को गठबंधन करना आम है, जहां एलआरयू हाल ही में संदर्भित वस्तुओं को हार्ड पॉइंटर रखता है। यह निश्चित रूप से आदर्श नहीं है क्योंकि यह मानता है कि आपके पास इन सभी शायद ही संदर्भित वस्तुओं के लिए पर्याप्त स्मृति है।
यह यह जानना भी चुनौती देता है कि एलआरयू के लिए एक अच्छा डिफ़ॉल्ट क्या है।
एक आदर्श दुनिया में, एंड्रॉयड यह कम स्मृति कॉलबैक के रूप में एक संकेत (ताकि मैं संभवतः एक छोटे से LRU के साथ शुरू कर सकता है का प्रयोग करेंगे, और समय समय पर इसे टक्कर जब तक कम स्मृति कॉलबैक तो होने वाली यह को पीछे करना शुरू कर दिया एक पाते हैं किसी डिवाइस के लिए अच्छा मूल्य), लेकिन मेरे अनुभव में यह कॉलबैक वास्तविक वीएम मेमोरी दबाव के साथ कभी नहीं लगता है।
क्या कोई यह पता लगाने के उचित तरीके से आया है कि आपका डेटा मॉडल किसी विशेष डिवाइस पर बहुत अधिक स्मृति का उपयोग कर रहा है?
'आउटऑफमेमरी अपवाद' गिनती को पकड़ रहा है? https://developer.android.com/training/displaying-bitmaps/cache-bitmap.html वहां इस्तेमाल किए गए 'memClass' का उपयोग आपके मॉडल को स्केल करने के लिए एक तरीका हो सकता है। – zapl
मुझे लगता है कि OutOfMemoryErrors फेंकना शुरू कर देते हैं आप मूल रूप से hosed हैं। लेकिन लेख के लिंक के लिए धन्यवाद। –