1、經過Dumpsys 來取值java
一、adb shell dumpsys meminfolinux
獲取的全部進程的內存信息,以及總內存,剩餘內存,使用的內存等信息。android
二、想得到某一進程內存的詳細信息,在後面加上包名或者pid.shell
adb shell dumpsys meminfo pakagename or Pidapp
三、重點關注字段工具
(1) Native/Dalvik 的 Heap 信息3d
它分別給出的是JNI層和Java層的內存分配狀況,若是發現這個值一直增加,則表明程序可能出現了內存泄漏。blog
Dalvik Heap就是常說的堆內存,Dalvik Heap不能超過最大限制;超過單個程序內存的最大限制時,就可能出現OOM(內存溢出)。進程
(2)Total 的 PSS 信息內存
PSS- Proportional Set Size 實際使用的物理內存(比例分配共享庫佔用的內存),這個值就是你的應用真正佔據的內存大小,經過這個信息,你能夠輕鬆判別手機中哪些程序佔內存比較大。
2、用/system/xbin/procrank工具 來取值很直觀
一、adb shell procrank
3、top
一、top -d 1 | grep packageName
方法一:adb shell "top -d 1|grep packageName"
方法二:adb shell 進入到linux命令下,執行該命令
4、關於單個應用內存佔用量問題
#查看單個應用程序最大內存限制
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!
注:設備的不同 最大內存限制也可能不同