zoukankan      html  css  js  c++  java
  • 【Android端 APP 内存分析】使用工具进行APP的内存分析

    Android端可以通过adb 命令直接获取内存信息,当然Android studio也提供了对内存的监控分析工具,并且后续可以结合MAT做分析

    今天介绍的是通过Android studio和MAT工具进行分析的方法:

    1、通过Android studio打包之后,app安装成功

    2、点击 Android Monitor,具体见下图:

     

    运行APP成功之后,就能看到下图中所示,说明APP的进程已经启动起来了,然后就可以进行操作和观察数据了

     

    看到Android Monitor里面能够监控的数据有:CPU、内存、网络、以及GPU

    3、查看内存这一栏:

     

    看到以5s为间隔,曲线图会一直变化,其中深蓝色代表已经分配的,浅蓝色代表free的

    进行多次反复操作,例如进入APP之后再正常退出,观察内存数据,如果内存一直在增长,就可以初步判定可能有问题

    点击下方的这个卡车,强制gc,之后点击卡车后面的第一个图标,将鼠标放上去之后,能够看到 dump java heap的tips,

     

    之后会生成一个hprof的文件,见下图:

     

    然后可以点击 Analyzer Tasks就可以将Analyzer Tasks的项展开,

     

    之后就能看到下方这个图,勾选Analyzer Tasks下方的两个内容,分别是检测Leaked Activities和Find Duplicate Strings

     

    之后点击右边的绿色三角按钮,就可以获得结果,点击展开Leaked Activities,就可以看到其中泄漏的Activity对象

     之后可以使用MAT工具,对这个hprof文件进行转换,然后通过MAT工具进行分析;

    hprof文件的地址在项目目录的 captures目录下

     找到这个文件,对文件进行格式转换,通过sdk工具中的platform-tools/hprof-conv.exe进行格式转换:

    通过cmd命令行即可:hprof-conv from.hprof to.hprof

    之后生成的这个hprof文件就可以用MAT打开了,更具体的分析可以见下方数据内容:

     

    内存分析时,其实不一定是内存泄漏就会有问题,内存泄漏指的是一些对象在强制gc之后依然没有被释放,但是程序本身的对象申请空间比较大,或者是多次操作总是不释放,这样的也会出现问题。

    一些容易出现内存问题的场景:

    1、存在多图片的页面,或者需要申请较大空间的情况(比如切换tab时)

    2、存在listview的页面,listview的复用及及时释放等

    3、Activity不发生变化的页面,但数据会不变更新的逻辑

  • 相关阅读:
    黄宗禹9.11作业
    黄宗禹第一次作业
    9.11
    9.18
    计算平均速度
    圆的周长与面积
    JAVA 作业
    9.11
    9.25
    计算平均速度题
  • 原文地址:https://www.cnblogs.com/keke-xiaoxiami/p/6187864.html
Copyright © 2011-2022 走看看