轉自https://testerhome.com/topics/2583
一、查看內存
查看Android應用內存:
adb shell dumpsys meminfo
1、查看詳細的內存:
adb shell dumpsys meminfo pakagename or Pid
看其中的Size 可以發現 Native Heap 和Dalvik Heap 占據了Heap Size
dalvik就是我們平常說的java堆,我們創建的對象是在這里面分配的。
對於內存的限制 這里糾正一下:是 dalvik heap不能超過最大限制,跟Native heap沒有關系!
最大限制查看:
#查看單個應用程序最大內存限制 adb shell getprop|grep heapgrowthlimit
得到結果:
|[dalvik.vm.heapgrowthlimit]: [96m]
這個96M是單個程序限制最大內存,而meminfo 里面的dalvik heap size 的最大值若果超出了96m 那就很可能會發生OOM
dalvik.vm.heapgrowthlimit和dalvik.vm.heapsize都是java虛擬機的最大內存限制,應用如果不想在dalvik heap達到heapgrowthlimit限制的時候出現OOM,需要在Manifest中的application標簽中聲明android:largeHeap=“true”,聲明后應用dalvik heap 達到heapsize的時候才會出現OOM!
注:設備的不一樣 最大內存限制也可能不一樣
現在大多數手機 的android程序內存一般限制在96M以上甚至更高,也可能更低。
2,用/system/xbin/procrank工具 來取值很直觀
adb shell procrank
VSS – Virtual Set Size 虛擬耗用內存(包含共享庫占用的內存)
RSS – Resident Set Size 實際使用物理內存(包含共享庫占用的內存)
PSS – Proportional Set Size 實際使用的物理內存(比例分配共享庫占用的內存)
USS – Unique Set Size 進程獨自占用的物理內存(不包含共享庫占用的內存)
USS 是針對某個進程開始有可疑內存泄露的情況, 是一個程序啟動了會產生的虛擬內存,一旦這個程序進程殺掉就會釋放!
二、查看cpu:
1、adb shell top -d 1 -s cpu |findstr com.golive.cinema
-d,cpu刷新時間
-s,安裝cpu排序
-t 顯示進程名稱,-s 按指定行排序,-n 在退出前刷新幾次,-d 刷新間隔,-m 顯示最大數量
2、adb shell dumpsys cpuinfo
0%后面跟的是pid
查看具體apk是:adb shell dumpsys cpuinfo|findstr com.golive.cinema