zoukankan      html  css  js  c++  java
  • android性能测试内存泄漏

    1.什么是内存泄漏?

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

    2.出有什么差别?

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

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

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

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

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

       android内存泄漏的终极原因就是多线程程序重复申请释放内存,可是释放的和申请的不正确应。导致吃内存。
        详见宋宝华的博客http://blog.csdn.net/21cnbao/article/details/7706671

    下面为博客原文:

        内存泄露分为两种境地,一个是人死了,钱还没花完,你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之内存泄漏调试学习与总结http://mzh3344258.blog.51cto.com/1823534/895093

    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    河工大玲珑校赛重现の 饶学妹的比赛
    河工大玲珑杯校赛随笔
    河南省第四届ACM省赛(T1) 序号互换
    河南省第四届ACM省赛(T3) 表达式求值
    debian系统下安装ssh
    戴尔poweredge r730服务器配置以及系统安装
    win10环境下安装Ubantu双系统(超详解)
    debian服务器解决中文安装后出现乱码的问题
    debian系统下安装ssh
    如何在ubuntu上搭建hustoj?
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4822305.html
Copyright © 2011-2022 走看看