• 学员就业
  • Android性能betway体育手机网--内存

    2016-04-24 22:08:00
    安大叔
    原创
    5770

    前言:


    近阶段都在探索android性能betway体育手机网 方面的东西,其中一个很重要的指标就是内存。对于内存,主要是一些gc是不是及时,或者说一些引用有没有及时释放,有没有导致oom或者内存持续增加导致卡顿,有没有大规模的内存抖动。近期项目由于个别模块大改,所以也就想把性能betway体育手机网的东西在实际项目中实践进去,本文就是针对实践过程进行一下分享。


    Memory Monitor:


    1.1内测实时显示监控

    Memory Monitor是android studio自带的一个非常好用的一个检测内存变化的工具,他能实时监控针对于某个进程的内存变化,帮助我们来判断内存是否及时释放,以及carsh是否超出了内存阀值。当然你也可以手动进行gc,看对象是否有得到释放。


    这里是针对pris云阅读thread所进行的实时内存监控,通过一些列侧滑切换资讯正文后内存发生的变化,可以看到内存持续上升,且返回首页后仍没有明显下降,那么这里的确是出现了一系列问题,是应该关注的内存的问题。


    1.2dump java heap
    Memory Monitor中dump java heap,能够dump一段时间内的.hprof文件来进行对象分析,看看是什么对象占用了大量内存
    1.3start allocation tracking
    Memory Monitor中start allocation tracking 可以手机alloc文件,其中强大的图标数据,反应了一些线程的具体内存占用情况,是一个很好的分析工具,在使用Memory Monitor过程中可以具体使用Allocation Tracker来对thread进行内存分析,分析哪些activity其中对象的占用内存情况。
    LeakCanary:
    LeakCanary是一个开源的内存检测工具,下面是结合阅读项目的具体实践。



    2.1编辑build.gradle
    需要加入具体依赖

    这里需要说明一下,gradle依赖需要翻墙,不翻墙很有可能失败,最好用公司网络(虽然说失败过很多次,但还是可以成功的)或者vpn,声明后重新构建去下载依赖


    2.2编辑Application.class开启LeakCanary
    该类即androidManifest中声明的application类(自定义的会居多,具体可以从androidManifest查看)
    在复写的oncreate()方法中加入如下代码:


    2.3安装应用到手机

    在安装阅读app的同时,会在手机中安装一个监控app


    2.4betway体育手机网apk
    此时就可以开始日常betway体育手机网啦,若有内测泄漏,会有toast提示正在dump数据
    打开leak app就可以看到一条具体的内测泄漏信息(这里在toast提示之后会有一定的延迟,过一会儿才会在leak app显示)
    这里具体定位到具体tread和activtiy,你还可以借助heap dump数据进行mat工具分析
    这里的例子是引用的对象没有释放造成的MainGridActivity页面的内存泄漏



    2.5可share一些数据文件
    这里提供share heap dump文件
    从git的源码可以看到,dump的.hprof文件在sdcard/Download/leakcanary目录下,你也可以通过adb shell下进行查看,并且pull到pc端来进行分析
    LeakCanary开源地址:https://github.com/square/leakcanary
    借助LeakCanary可以很好的反馈betway体育手机网过程中的内存泄漏情况,以助于排查一些对象没有及时释放导致oom的情况。




    公司简介
    Besttest,全称北京百测技术咨询有限公司,是目前中国唯一一家专业高端软件培训机构,长年致力于betway体育手机网领域在职短期提升、企业内训、技术推广、免费公开课等多种服务方式,持续为软件betway体育手机网工程师提供优秀的学习平台。