搜索
写经验 领红包

adoid性能测试包含哪些内容(adoid性能检测)

导语:Android性能测试方法大放送(6)——内存泄漏

今天简单讲解一下内存泄漏的问题,关于如何查看将在以后将工具的时候再具体讲解。

一、Android内存管理机制

进程保存在内存中,在占用内存未超过阈值前系统不会进行主动清除(可以主动制定阈值,例如还剩20%的内存就会主动触发清除机制),随着应用的增多,试图保存在内存中的进程也随之增多,导致系统流畅度降低。

二、解决方法

赋予系统主动清除内存的能力,例如待机后杀死不必要的进程。

三、关于内存泄漏方面的测试,可以通过几个方面来测试: 1、通过monkey压力测试记录内存的使用情况,分析数据曲线图和日志情况;

2、通过eclipse上的mat+heap来分析存在内存泄漏方面的节点

四、Android内存限制

利用命令:adb pull /system/build.prop导出build文件,文件中有相关的阈值。

1、dalvik.vm.heapgrowthlimit:单个应用程序最大内存限制,超过这个值会产生OOM

2、dalvik.vm.heapsize:单个JAVA虚拟机最大的内存限制,超过这个值会产生OOM

3、dalvik.vm.heapstartsize:应用程序启动后分配的初始内存,调节这个值会影响到应用的流畅性和整体RAM消耗。这个值越小,系统RAM消耗越慢;相反,这个值越大系统RAM消耗越快,但是程序更流畅。

五、如何使用命令查看程序的内存使用情况

1、命令adb shell dumpsys meminfo $packagename or $pid 使用程序的包名或进程pid

如下图所示:

2、指标含义:size是需要的内存,而allocated是分配了的内存,对应的2列是native和dalvik,当总数也就是total这列超过单个程序内存的最大限制时,OOM就有可能出现了。

六、OOM的常见原因:

1、非静态内部类的静态实例容易造成内存泄漏;

2、activity使用静态成员;

3、使用handle时的内存问题;

4、注册某个对象后未反注册;

5、集合中对象没清理造成的内存泄漏;

6、资源对象没关闭造成的内存泄漏;

7、一些不良代码造成内存压力:Bitmap使用不当;构造Adapter时,没有使用缓存的convertView;在经常调用的方法中创建对象(例如循环)。

本文内容由小熊整理编辑!