android如何查看cpu的占用率和内存泄漏
来源:互联网 发布:opera linux 安装 编辑:程序博客网 时间:2024/05/22 06:32
http://www.cnblogs.com/yejiurui/p/3472765.html
在分析内存优化的过程中,其中一个最重要的是我们如何查看cpu的占用率和内存的占用率呢,这在一定程度上很重要,经过查询资料,研究了一下,暂时了解到大概有以下几种方式,如果哪位高手有更好的办法,或者文中描述有错误,还望高手在下面留言,非常感谢!
一、 通过eclipse,ADT开发工具的DDMS来查看(Heap)
在“Devices”窗口中选择模拟器中的一个需要查看的程序,从工具条中选“Update heap”按钮,给这个程序设置上“heap Updates”,然后在Heap视图中点击Cause GC就可以实时显示这个程序的一些内存和cpu的使用情况了。
然后就会出现如下界面:
说明:
a) 点击“Cause GC”按钮相当于向虚拟机请求了一次gc操作;
b) 当内存使用信息第一次显示以后,无须再不断的点击“Cause GC”,Heap视图界面会定时刷新,在对应用的不断的操作过程中就可以看到内存使用的变化;
c) 内存使用信息的各项参数根据名称即可知道其意思,在此不再赘述。
大致解析如下:
这个就是当前应用的内存占用,allocated 是已经分配的内存 free是空闲内存,
heap size 是虚拟机分配的 不是固定值
heap size 的最大值跟手机相关的
有网友说,
一般看1byte的大部分就是图片占用的
如何判断应用是否有内存泄漏的可能性呢?
如何才能知道我们的程序是否有内存泄漏的可能性呢。这里需要注意一个值:Heap视图中部有一个Type叫做data object,即数据对象,也就是我们的程序中大量存在的类类型的对象。在data object一行中有一列是“Total Size”,其值就是当前进程中所有Java数据对象的内存总量,一般情况下,这个值的大小决定了是否会有内存泄漏。可以这样判断:
a) 不断的操作当前应用,同时注意观察data object的Total Size值;
b) 正常情况下Total Size值都会稳定在一个有限的范围内,也就是说由于程序中的的代码良好,没有造成对象不被垃圾回收的情况,所以说虽然我们不断的操作会不断的生成很多对 象,而在虚拟机不断的进行GC的过程中,这些对象都被回收了,内存占用量会会落到一个稳定的水平;
c) 反之如果代码中存在没有释放对象引用的情况,则data object的Total Size值在每次GC后不会有明显的回落,随着操作次数的增多Total Size的值会越来越大,
直到到达一个上限后导致进程被kill掉。
d) 此处已system_process进程为例,在我的测试环境中system_process进程所占用的内存的data object的Total Size正常情况下会稳定在2.2~2.8之间,而当其值超过3.55后进程就会被kill。
在如下的位置:
二、通过linux命令来查看
常用的命令有
adb shell
ps 是看进程的
top命令是看占用率的
3.获取最大内存的方法
ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
am.getMemoryClass();
这个是最大内存,如果超过这个内存就OOM了
---------------------------------------
内存耗用:VSS/RSS/PSS/USS 的介绍
- VSS - Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)
- RSS - Resident Set Size 实际使用物理内存(包含共享库占用的内存)
- PSS - Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)
- USS - Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)
一般来说内存占用大小有如下规律:VSS >= RSS >= PSS >= USS
- android如何查看cpu的占用率和内存泄漏
- android如何查看cpu的占用率和内存泄漏
- android如何查看cpu的占用率和内存泄漏
- android如何查看cpu的占用率和内存泄漏
- android如何查看cpu的占用率和内存泄漏
- android如何查看cpu的占用率和内存泄漏
- android如何查看cpu的占用率和内存泄漏
- android如何查看cpu的占用率和内存泄漏
- android如何查看cpu的占用率和内存泄漏
- android如何查看cpu的占用率和内存泄漏
- android如何查看cpu的占用率和内存泄漏
- Windows上查看android 内存和cpu占用率
- Linux下如何查看CPU、内存占用率
- 如何查看CPU 占用率
- Linux服务器如何查看CPU占用率、内存占用、带宽占用
- linux 查看进程cpu和内存占用率排序
- linux ps命令,查看进程cpu和内存占用率排序
- linux ps命令,查看进程cpu和内存占用率排序
- AngularJS之$window窗口对象
- java线程通信
- 程序员之路——一个老程序员对刚上大学的学弟学妹的忠告
- k8s源码分析-----kubelet启动流程分析(续)
- 论文笔记 A MultiPath Network for Object Detection
- android如何查看cpu的占用率和内存泄漏
- 二叉树的遍历之——Morris遍历
- More is better
- 微信公众号开发---基本原理及注册
- 浅谈集合转换成数组的方法--toArray()与toArray(T[] a)
- Web安全测试中常见逻辑漏洞解析(实战篇)
- sort() 的随机排列(不靠谱)
- TCP与UDP的不同接包处理方式
- Android中的内存泄漏