window下查看android应用程序cpu,内存波动
2014-11-21 16:45
190 查看
一、通过eclipse,ADT开发工具的DDMS来查看(Heap)
在“Devices”窗口中选择模拟器中的一个需要查看的程序,从工具条中选“Updateheap”按钮,给这个程序设置上“heap
Updates”,然后在Heap视图中点击Cause
GC就可以实时显示这个程序的一些内存和cpu的使用情况了。
![](http://img.blog.csdn.net/20141121164544125?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzk0NzAwMg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
然后就会出现如下界面:
![](http://img.blog.csdn.net/20141121164701384?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzk0NzAwMg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
说明:
a) 点击“Cause GC”按钮相当于向虚拟机请求了一次gc操作;
b) 当内存使用信息第一次显示以后,无须再不断的点击“CauseGC”,Heap视图界面会定时刷新,在对应用的不断的操作过程中就可以看到内存使用的变化;
c) 内存使用信息的各项参数根据名称即可知道其意思,在此不再赘述。
大致解析如下:
这个就是当前应用的内存占用,allocated是已经分配的内存
free是空闲内存,
heap size是虚拟机分配的不是固定值
heap size 的最大值跟手机相关的
![](http://img.blog.csdn.net/20141121164740228?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzk0NzAwMg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
有网友说,
一般看1byte的大部分就是图片占用的
![](http://img.blog.csdn.net/20141121165325000?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzk0NzAwMg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
如何判断应用是否有内存泄漏的可能性呢?
如何才能知道我们的程序是否有内存泄漏的可能性呢。这里需要注意一个值:Heap视图中部有一个Type叫做data
object,即数据对象,也就是我们的程序中大量存在的类类型的对象。在dataobject一行中有一列是“Total
Size”,其值就是当前进程中所有Java数据对象的内存总量,一般情况下,这个值的大小决定了是否会有内存泄漏。可以这样判断:
a) 不断的操作当前应用,同时注意观察data object的Total
Size值;
b) 正常情况下Total Size值都会稳定在一个有限的范围内,也就是说由于程序中的的代码良好,没有造成对象不被垃圾回收的情况,所以说虽然我们不断的操作会不断的生成很多对象,而在虚拟机不断的进行GC的过程中,这些对象都被回收了,内存占用量会会落到一个稳定的水平;
c) 反之如果代码中存在没有释放对象引用的情况,则dataobject的Total
Size值在每次GC后不会有明显的回落,随着操作次数的增多TotalSize的值会越来越大,
直到到达一个上限后导致进程被kill掉。
d) 此处已system_process进程为例,在我的测试环境中system_process进程所占用的内存的dataobject的Total
Size正常情况下会稳定在2.2~2.8之间,而当其值超过3.55后进程就会被kill。
在如下的位置:
![](http://img.blog.csdn.net/20141121164839484?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzk0NzAwMg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
二、通过linux命令来查看
拿出数据线先把手机和电脑连上吧。
![](http://img.blog.csdn.net/20141121165350437?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzk0NzAwMg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
1.打开终端,进入上述目录,如下图所示:
![](http://img.blog.csdn.net/20141121165401500?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzk0NzAwMg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
2.输入adb
shell,打开adb命令行,如下图所示:
![](http://img.blog.csdn.net/20141121165550640?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzk0NzAwMg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
3.查看cpu使用情况:
输入命令:top-m 10 -s cpu(-m显示最大数量,-s按指定行排序),如下图所示:
![](http://img.blog.csdn.net/20141121165626058?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzk0NzAwMg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
参数含义:
PID : progress identification,应用程序ID
S :进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数
#THR :程序当前所用的线程数
VSS : VirtualSet Size虚拟耗用内存(包含共享库占用的内存)
RSS : ResidentSet Size实际使用物理内存(包含共享库占用的内存)
PCY :前台(fg)和后台(bg)进程
UID :User Identification,用户身份ID
Name :应用程序名称
注意第一列的pid,使用pid值可以查看当前程序的内存使用情况。
4.查看指定程序内存使用情况:
输入命令: dumpsys meminfo 3253,如下图所示:
![](http://img.blog.csdn.net/20141121165719036?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzk0NzAwMg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
参数含义:
dalvik : dalvik使用的内存
native :native堆上的内存,指C\C++堆的内存(android3.0以后bitmap就是放在这儿)
other :除了dalvik和native的内存,包含C\C++非堆内存······
Pss :该内存指将共享内存按比例分配到使用了共享内存的进程
allocated :已使用的内存
free :空闲的内存
private dirty :非共享,又不能被换页出去的内存(比如linux系统中为了提高分配内存速度而缓冲的小对象,即使你的进程已经退出,该内存也不会被释放)
share dirty :共享,但有不能被换页出去的内存
5.使用ctrl + c,退出adb命令行。
一、通过eclipse,ADT开发工具的DDMS来查看(Heap)
在“Devices”窗口中选择模拟器中的一个需要查看的程序,从工具条中选“Updateheap”按钮,给这个程序设置上“heap
Updates”,然后在Heap视图中点击Cause
GC就可以实时显示这个程序的一些内存和cpu的使用情况了。
然后就会出现如下界面:
说明:
a) 点击“Cause GC”按钮相当于向虚拟机请求了一次gc操作;
b) 当内存使用信息第一次显示以后,无须再不断的点击“CauseGC”,Heap视图界面会定时刷新,在对应用的不断的操作过程中就可以看到内存使用的变化;
c) 内存使用信息的各项参数根据名称即可知道其意思,在此不再赘述。
大致解析如下:
这个就是当前应用的内存占用,allocated是已经分配的内存
free是空闲内存,
heap size是虚拟机分配的不是固定值
heap size 的最大值跟手机相关的
有网友说,
一般看1byte的大部分就是图片占用的
如何判断应用是否有内存泄漏的可能性呢?
如何才能知道我们的程序是否有内存泄漏的可能性呢。这里需要注意一个值:Heap视图中部有一个Type叫做data
object,即数据对象,也就是我们的程序中大量存在的类类型的对象。在dataobject一行中有一列是“Total
Size”,其值就是当前进程中所有Java数据对象的内存总量,一般情况下,这个值的大小决定了是否会有内存泄漏。可以这样判断:
a) 不断的操作当前应用,同时注意观察data object的Total
Size值;
b) 正常情况下Total Size值都会稳定在一个有限的范围内,也就是说由于程序中的的代码良好,没有造成对象不被垃圾回收的情况,所以说虽然我们不断的操作会不断的生成很多对象,而在虚拟机不断的进行GC的过程中,这些对象都被回收了,内存占用量会会落到一个稳定的水平;
c) 反之如果代码中存在没有释放对象引用的情况,则dataobject的Total
Size值在每次GC后不会有明显的回落,随着操作次数的增多TotalSize的值会越来越大,
直到到达一个上限后导致进程被kill掉。
d) 此处已system_process进程为例,在我的测试环境中system_process进程所占用的内存的dataobject的Total
Size正常情况下会稳定在2.2~2.8之间,而当其值超过3.55后进程就会被kill。
在如下的位置:
二、通过linux命令来查看
拿出数据线先把手机和电脑连上吧。
1.打开终端,进入上述目录,如下图所示:
2.输入adb
shell,打开adb命令行,如下图所示:
3.查看cpu使用情况:
输入命令:top-m 10 -s cpu(-m显示最大数量,-s按指定行排序),如下图所示:
参数含义:
PID : progress identification,应用程序ID
S :进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数
#THR :程序当前所用的线程数
VSS : VirtualSet Size虚拟耗用内存(包含共享库占用的内存)
RSS : ResidentSet Size实际使用物理内存(包含共享库占用的内存)
PCY :前台(fg)和后台(bg)进程
UID :User Identification,用户身份ID
Name :应用程序名称
注意第一列的pid,使用pid值可以查看当前程序的内存使用情况。
4.查看指定程序内存使用情况:
输入命令: dumpsys meminfo 3253,如下图所示:
参数含义:
dalvik : dalvik使用的内存
native :native堆上的内存,指C\C++堆的内存(android3.0以后bitmap就是放在这儿)
other :除了dalvik和native的内存,包含C\C++非堆内存······
Pss :该内存指将共享内存按比例分配到使用了共享内存的进程
allocated :已使用的内存
free :空闲的内存
private dirty :非共享,又不能被换页出去的内存(比如linux系统中为了提高分配内存速度而缓冲的小对象,即使你的进程已经退出,该内存也不会被释放)
share dirty :共享,但有不能被换页出去的内存
5.使用ctrl + c,退出adb命令行。
相关文章推荐
- 查看基于Android 系统单个进程内存、CPU使用情况的几种方法
- Android上如何查看CPU和内存信息
- [工作笔记之三] 通过adb查看android手机CPU和内存占用情况
- Android使用adb查看当前设备运行进程CPU内存等资源的使用情况
- Android 通过adb shell命令查看内存,CPU,启动时间,电量等信息
- 查看基于Android 系统单个进程内存、CPU使用情况的几种方法
- 查看基于Android 系统单个进程内存、CPU使用情况的几种方法
- Android使用adb查看当前设备运行进程CPU内存等资源的使用情况
- windows下使用adb工具查看android程序cpu和内存消耗景况
- 查看android程序的CPU和内存消耗情况
- 查看基于Android 系统单个进程内存、CPU使用情况的几种方法
- 查看android程序的CPU和内存消耗情况
- Android中查看CPU和内存
- windows下使用adb工具查看android程序cpu和内存消耗情况
- 查看基于Android 系统单个进程内存、CPU使用情况的几种方法
- Android 进程内存、CPU使用查看
- windows下使用adb工具查看android程序cpu和内存消耗情况
- 查看基于Android 系统单个进程内存、CPU使用情况的几种方法
- windows下使用adb工具查看android程序cpu和内存消耗情况
- 【Android】通过adb shell命令查看内存,CPU,启动时间,电量等信息