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

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

  • 相关阅读:
    HTML DOM 06 节点关系
    HTML DOM 05 事件(三)
    HTML DOM 05 事件(二)
    HTML DOM 05 事件(一)
    html DOM 04 样式
    html DOM 03 节点的属性
    html DOM 02 获取节点
    html DOM 01 节点概念
    JavaScript 29 计时器
    JavaScript 28 弹出框
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4822305.html
Copyright © 2011-2022 走看看