查看CPU 消耗
1.进入adb shell
2.输入top -m 10 -s cpu 可查看占用cpu最高的前10个程序(-t 显示进程名称,-s 按指定行排序,-n 在退出前刷新几次,-d 刷新间隔,-m 显示最大数量)
参数含义:
PID:progress identification,应用程序ID
S: 进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数。
#THR:程序当前所用的线程数
VSS:Virtual Set Size虚拟耗用内存(包含共享库占用的内存)
RSS: Resident Set Size实际使用物理内存(包含共享库占用的内存)
PCY:不知道什么意思,期待解答
UID:User Identification,用户身份ID
Name:应用程序名称
查看内存消耗
1.进入adb shell ;
2.输入dumpsys meminfo (PID或者是包名),出现如下图;
参数含义:
dalvik:dalvik使用的内存
native:native堆上的内存,指C\C++堆的内存(android 3.0以后bitmap就是放在这儿)
other:除了dalvik和native的内存,包含C\C++非堆内存······
Pss:该内存指将共享内存按比例分配到使用了共享内存的进程
allocated:已使用的内存
free:空闲的内存
private dirty:非共享,又不能被换页出去的内存(比如linux系统中为了提高分配内存速度而缓冲的小对象,即使你的进程已经退出,该内存也不会被释放)
share dirty:共享,但有不能被换页出去的内存
分析内存
1.通过DDMS,选择想要查看的程序进程,点击update heap;
2.在heap界面中查看内存消耗情况
3.想要进一步分析,需要借助于MAT 插件;
4.选中程序进程点击dump HPROF file图标,弹出如下图,一般选择第一个就可以了;
.
5.出现如下图,点击leak suspect,mat会列出占内存最大的的几个对象;