您的位置:首页 > 移动开发 > Android开发

android性能测试内存泄漏

2015-09-19 21:40 274 查看

1.什么是内存泄漏?

适用于该系统的内存使用内存泄漏,未回复(释放),该内存可以没有事业,也不能被其他人使用使用自己。

2.出有什么差别?

内存泄漏是分配出去的内存无法回收。
内存溢出是程序使用的内存超出了系统能给予的。

3.怎样从測试数据中得出内存泄漏?

首先,我们须要使用性能測试工具去监控性能数据,android可使用GT.apk(下载地址:http://gt.tencent.com/)监控内存数据。

然后,对測试对象连续反复做全然同样的操作多次。然后。将測试结果(内存)制作成折线图。假设几次全然同样的操作中,内存持续增长。那么能够判定内存泄漏。

4.导致内存泄漏的原因?

android内存泄漏的终极原因就是多线程程序重复申请释放内存,可是释放的和申请的不正确应。导致吃内存。
详见宋宝华的博客/article/2757006.html

下面为博客原文:

内存泄露分为两种境地,一个是人死了,钱还没花完,你malloc的内存还没释放进程就死了,我们说,这个问题在Linux不存在,进程是个资源封装的单位。进程挂的时候,资源会被内核释放掉的,死的时候还唯独个僵尸而已。第二个境地是,人活着,钱没了。这个问题才是Linux真正操心的。一个多线程的程序。执行过程中重复申请和释放内存,可是释放的与申请的不正确应,就慢慢地吃内存,这个进程的内存消耗曲线振荡上升,直到耗尽内存。所以,在Linux世界里,我们不用操心人死了,钱还没花完的问题
。党会帮我们处理的。我们要操心的是。人活着,钱没了的问题。

所以,能早结束的进程早点结束。多线程中该释放的内存尽早释放。

不了解进程和线程的童鞋能够參考此文章。很简单明了 : http://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html

5.怎样避免内存泄漏?

1.长期保持了context对象的引用。可參考官方博客:http://android-developers.blogspot.com/2009/01/avoiding-memory-leaks.html
引用译文:在Android应用程序中,非常多操作都用到了Context对象。可是大多数都是用来载入和訪问资源的。这就是为什么全部的显示控件都须要一个Context对象作为构造方法的參数。在Android应用程序中通常能够使用两种Context对象:Activity和Application。当类或方法须要Context对象的时候常见的作法是使用第一个作为Context參数。

但这就意味着View对象对整个activity保持引用。因此也就保持对activity内的全部东西的引用,也就是整个View结构和它全部的资源都无法被及时的回收,并且对activity的长期引用是比較隐蔽的。
2.其它情况可參考这个博文。写的挺具体,我还没来得及看,看完之后再简单分析一下。
Android之内存泄漏调试学习与总结/article/4316722.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: