का कारण ढूंढना और उपचार करना मैं काम करने की कोशिश कर रहा हूं कि मेरा ऐप इतना मेमोरी क्यों उपयोग कर रहा है। मैं अक्सर इसे 15 से 18 एमबी के बीच देखता हूं, जो अपेक्षा करता है उससे काफी अधिक है। मैं डी डी एम एस के माध्यम से ढेर आकार पर एक नज़र लिया और यह देखा:बड़े ढेर आकार
कि एक बालक suspicous देखा क्योंकि मेरे एप्लिकेशन को सभी में बड़ी छवियों से निपटने के नहीं है। असल में मेरे ऐप में ड्रॉबल्स की कुल योग लगभग 250 केबी है। तो मैंने एक ढेर डंप बनाया और यह पता लगाने के लिए मैट का इस्तेमाल किया जहां यह सारी याददाश्त चल रही थी। बाइट [] सरणियों दूर सबसे बड़ी उपभोक्ता द्वारा थे, तो मैं नीचे drilled और चला है कि निम्न:
मैं बिल्कुल पता नहीं है क्यों sPreloadedDrawables इस तरह के एक उच्च बनाए रखा ढेर आकार के लिए जिम्मेदार है। मुझे यह भी पता नहीं है कि मूल कारण की पहचान कैसे करें, या इसे कैसे ठीक करें।
मुझे यहां से कहाँ जाना चाहिए? मेरा ऐप ज्यादातर उन सेवाओं के माध्यम से पृष्ठभूमि में काम करता है जो छवि डेटा से बिल्कुल निपट नहीं पाते हैं। मेरे पास ऐसी गतिविधियां हैं जो उपयोगकर्ता उपयोग करने का विकल्प चुन सकते हैं, लेकिन फिर से, वे छोटे ड्रॉबल्स का उपयोग करते हैं जो इस तरह के बड़े ढेर आकार की व्याख्या नहीं करते हैं। मैंने गतिविधि लीक इत्यादि की किसी भी ग़लत घटनाओं के लिए भी जांच की, लेकिन किसी का पता नहीं लगा।
संपादित करें: मैंने देखा है कि एमुलेटर में चलाने पर ढेर का आकार काफी कम है। यह काफी उलझन में है। :/
आप कौन सा एंड्रॉइड संस्करण चल रहे हैं? मैंने देखा कि आईसीएस छवि ड्रॉबल्स को प्रीलोड करता है, मुझे लगता है कि एक आसान UI अनुभव है और बढ़ी हुई वीएम मेमोरी सीमा का लाभ उठाएं। तो यदि आपका फोन आईसीएस पर है और आपका एमुलेटर 2.X पर है जो अंतर को समझाएगा। मैंने व्यक्तिगत रूप से एमुलेटर का परीक्षण नहीं किया है 4.X यह जांचने के लिए कि क्या फुलाया गया स्मृति भी मौजूद है (मुझे लगता है कि बाद में मेरे लिए कुछ करना है)। यह निश्चित रूप से मेरे फोन पर 4.0.3 चल रहा है। – sciutand
मेरा फोन स्टॉक एंड्रॉइड 4.0.3 चला रहा है, जैसा कि एमुलेटर है। – Glitch
आप एमुलेटर बनाम डिवाइस पर किस स्क्रीन घनत्व/आकार का उपयोग कर रहे हैं? – cistearns