【Android端 APP 内存分析】使用工具进行APP的内存分析
2016-12-16 17:43
197 查看
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不发生变化的页面,但数据会不变更新的逻辑
今天介绍的是通过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不发生变化的页面,但数据会不变更新的逻辑
相关文章推荐
- 使用Facebook的Redex工具进行android app运行优化
- 使用Android ADT最新开发工具后,新建项目出现appcompat v7 他是什么?
- 通过USB连接到Android真机,在终端中配置adb工具,并使用adb工具对安卓手机进行调试
- 抓包工具Charles简单使用介绍(可抓取Android中app的请求)
- Android:当只有APK,可以使用:hierarchyview工具进行空间ID,类型查看(Robotium测试)
- 抓包工具Charles简单使用介绍(可抓取Android中app的请求)
- Android App中使用LinearLayout进行居中布局的实例讲解
- Android内存优化之——static使用篇(使用MAT工具进行分析)
- 使用Fiddler对Android App进行抓包的步骤详解
- 【keytool jarsigner工具的使用】Android 使用JDK1.7的工具 进行APK文件的签名,以及keystore文件的使用
- SSH框架实现返回json数据,并使用android app进行访问
- J哥---------分享好东西:android抓包工具fiddler使用介绍 抓取 手机APP 中资源。
- 使用ant和android的相关工具进行编译,打包android工程
- 【Android Training - 15】云同步的实现 [Lesson 1 - 使用App Engine进行同步]
- 【Android工具】使用fiddler高效进行网络数据调试
- 【Android安全】使用apktool工具进行对apk反编译和回编
- Android Studio——使用Android ADT最新开发工具后,新建项目出现appcompat v7 他是什么?
- android——使用自带录屏工具进行屏幕录像