一、通過Dumpsys 來取值
1、adb shell dumpsys meminfo
獲取的所有進程的內存信息,以及總內存,剩余內存,使用的內存等信息。
2、想獲得某一進程內存的詳細信息,在后面加上包名或者pid.
adb shell dumpsys meminfo pakagename or Pid
3、重點關注字段
(1) Native/Dalvik 的 Heap 信息
它分別給出的是JNI層和Java層的內存分配情況,如果發現這個值一直增長,則代表程序可能出現了內存泄漏。
Dalvik Heap就是常說的堆內存,Dalvik Heap不能超過最大限制;超過單個程序內存的最大限制時,就可能出現OOM(內存溢出)。
(2)Total 的 PSS 信息
PSS- Proportional Set Size 實際使用的物理內存(比例分配共享庫占用的內存),這個值就是你的應用真正占據的內存大小,通過這個信息,你可以輕松判別手機中哪些程序占內存比較大。
二、用/system/xbin/procrank工具 來取值很直觀
1、adb shell procrank
三、top
1、top -d 1 | grep packageName
方法一:adb shell "top -d 1|grep packageName"
方法二:adb shell 進入到linux命令下,執行該命令
四、關於單個應用內存占用量問題
#查看單個應用程序最大內存限制
adb shell "getprop|grep heapgrowthlimit"
#應用啟動后分配的初始內存
adb shell "getprop|grep dalvik.vm.heapstartsize"
#單個java虛擬機最大的內存限制
adb shell "getprop|grep dalvik.vm.heapsize"
應用如果不想在 dalvik heap達到heapgrowthlimit限制的時候出現OOM,需要在 Manifest中的application標簽中聲明 android:largeHeap=“true”,聲明后應用 dalvik heap 達到heapsize的時候才會出現OOM!
注:設備的不一樣 最大內存限制也可能不一樣