Android dos命令查看应用内存占用情况

(一) 内参术语

VSS - Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)

RSS - Resident Set Size 实际使用物理内存(包含共享库占用的内存)

PSS - Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)

USS - Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)

一般来说内存占用大小有如下规律:VSS >= RSS >= PSS >= USS

(二)、通过Top命定查询进程内存的变化, 发现如果某个进程RSS一直在提高表示该进程有内存泄漏嫌疑

top –m 20 –s rss

$pid表示进程号

-i 2表示每两秒更新一次

DirtyPage是内存泄漏的一种重要指标, 只有可写的内存区域才存在内存泄漏的可能性.

privateDirty  进程独有占的dirty内存

shareDirty 进程的共享库占的dirty内存

如果上面两个指标有一个不断增长, 表示该进程内存有泄漏的嫌疑.

(三)、命令格式Dumpsys meminfo $pid

内存Break-down:

Native

Dalvik

Other

内存持续增加表示有内存泄漏的嫌疑

 

Objects的变化

Objects持续增加表示有内存泄漏嫌疑

(四)、命令格式procrank

PID     Vss      Rss          Pss       Uss  cmdline
481   31536K   30936K   14337K   9956K system_server
475   26128K   26128K   10046K   5992K zygote
526   25108K   25108K   9225K    5384K android.process.acore
523   22388K   22388K   7166K    3432K com.android.phone
574   21632K   21632K   6109K    2468K com.android.settings
521   20816K   20816K   6050K    2776K jp.co.omronsoft.openwnn

。。。。。。

 

查看Uss如果这个指标不断增长, 表示该进程内存有泄漏的嫌疑。

(五)、MAT工具

生成.hprof文件

先编辑一个批量执行脚本dumphprof.bat,内容如下:

adb shell am dumpheap %1 /sdcard/%2.hprof

pause

adb pull /sdcard/%2.hprof ./%2.hprof

hprof-conv %2.hprof ./1/%2_conv.hprof

 

脚本含义:先用adbshell am dumpheap %1 /sdcard/%2.hprof生成初始hprof数据,第一个参数是进程号,第二个参数是最终生成的文件名;然后用adbpull /sdcard/%2.hprof ./%2.hprof将原始数据卡版本到本地,然后用hprof-conv%2.hprof ./1/%2_conv.hprof将原始数据转换为mat可识别的数据,例子脚本是把最终数据文件放在当前目录的子目录1里面

 

脚本使用:手机连上电脑后,运行要检查的应用,用adb shell ps命令列出所有应用的进程,找到对应被检查应用的进程id

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值