2015-01-24 12 views
10

कोई ऐप्लिकेशन में जांच कर रही RAM उपयोग मैं पर काम कर रहा हूँ, मैं (उपकरण के लिए> जाकर एंड्रॉयड स्टूडियो में पहुँचा जा सकता है एंड्रॉयड स्टूडियो में मेमोरी मॉनिटर उपकरण का उपयोग कर रहे हैं की तुलना में अलग RAM उपयोग रिपोर्ट एंड्रॉइड> मेमोरी मॉनिटर)। मैंने देखा है कि मेमोरी मॉनीटर में रिपोर्ट किए गए मेरे ऐप का रैम उपयोग डिवाइस से रैम उपयोग को देखने से हमेशा बहुत कम है (सेटिंग> एप्स> रनिंग पर जाकर एक्सेस किया जा सकता है)। जैसा कि आप नीचे दिए गए स्क्रीनशॉट में देख सकते हैं, मेमोरी मॉनिटर 18 एमबी रैम उपयोग की रिपोर्ट कर रहा है (यदि आप मुफ्त स्थान शामिल करते हैं तो 23 एमबी), लेकिन डिवाइस 43 एमबी की रिपोर्ट कर रहा है।एंड्रॉयड स्टूडियो में मेमोरी की निगरानी उपकरण

क्यों फर्क है और यह भी एक और अन्य की तुलना में सही है?

Memory Monitor

device

+2

मैं बजाय 'procstats' पर ध्यान केंद्रित करूंगा: http://android-developers.blogspot.com/2014/01/process-stats-understanding-how-your.html – CommonsWare

+0

डेवलपर दस्तावेज़ों में Google का विवरण भी है "रैम उपयोग की जांच करना" https://developer.android.com/tools/debugging/debugging-memory.html जिसमें एंड्रॉइड डिवाइस मॉनीटर शामिल है। इसे टूल्स> एंड्रॉइड> एंड्रॉइड डिवाइस मॉनिटर पर जाकर एंड्रॉइड स्टूडियो में एक्सेस किया जा सकता है – Richard

उत्तर

8

मुझे लगता है कि स्मृति की निगरानी उपकरण ढेर जावा कोड द्वारा किए गए आवंटन के बारे में Dalvik आभासी मशीन के लिए बात कर रही है, और डिवाइस प्रबंधक क्या पूरी प्रक्रिया स्मृति के लिए उपयोग कर रहा है दिखा रहा है । तो पहले वर्चुअल मशीन (या इसके टेक्स्ट और लाइब्रेरीज़), या किसी भी ऑफ-हेप आवंटन द्वारा उपयोग किए जाने वाले ओवरहेड या मेमोरी शामिल नहीं होते हैं (कभी-कभी देशी कोड स्मृति को आवंटित कर सकता है जो सीधे वीएम को दिखाई नहीं दे रहा है)।

https://developer.android.com/tools/debugging/debugging-memory.html#ViewingAllocations देखें और कमांड चलाने की कोशिश:

adb shell dumpsys meminfo <package_name> 

अपने आवेदन के रन-टाइम स्मृति के उपयोग का एक और अधिक सटीक विश्लेषण प्राप्त करने के लिए।

0

मैं परीक्षण किया है एंड्रॉयड स्टूडियो के मेमोरी मॉनिटर के Allocated प्रोग्राम के रूप में इस तरह से प्राप्त किया जा सकता है:

long allocatedMemory = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();

लेकिन यह केवल वर्तमान एप्लिकेशन की जानकारी पाने के लिए काम करता है।

संबंधित मुद्दे