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端 APP 内存分析】使用工具进行APP的内存分析的更多相关文章

  1. 如何做好 Android 端音视频测试?

    在用户眼中,优秀的音视频产品应该具有清晰.低延时.流畅.秒开.抗丢包.高音效等特征.为了满足用户以上要求,网易云信的工程师通过自建源站,在SDK端为了适应网络优化进行QoS优化,对视频编码器进行优化, ...

  2. Android内存优化(三)详解内存分析工具MAT

    前言 在这个系列的前四篇文章中,我分别介绍了DVM.ART.内存泄漏和内存检测工具的相关知识点,这一篇我们通过一个小例子,来学习如何使用内存分析工具MAT. 1.概述 在进行内存分析时,我们可以使用M ...

  3. 使用Chrome开发者工具调试Android端内网页(微信,QQ,UC,App内嵌页等)

    使用Chrome开发者工具调试Android端内网页(微信,QQ,UC,App内嵌页等) 前言 移动端页面调试一直是好多朋友头疼的问题,iOS 由于其封闭的特性和整体较高的性能,整体适配相对好做,调试 ...

  4. Android内存泄漏的检测流程、捕捉以及分析

    https://blog.csdn.net/qq_20280683/article/details/77964208 Android内存泄漏的检测流程.捕捉以及分析 简述: 一个APP的性能,重度关乎 ...

  5. Android内存泄露---检测工具篇

    内存使用是程序开发无法回避的一个问题.如果我们毫不在意肆意使用,总有一天会为此还账,且痛不欲生...所以应当防患于未然,把内存使用细化到平时的每一行代码中. 内存使用概念较大,本篇先讲对已有app如何 ...

  6. 【Android端 APP GPU过度绘制】GPU过度绘制及优化

    一.Android端的卡顿 Android端APP在具体使用的过程中容易出现卡顿的情况,比如查看页面时出现一顿一顿的感受,切换tab之后响应很慢,或者具体滑动操作的时候也很慢. 二.卡顿的原因 卡顿的 ...

  7. 【Android端APP 安装包检查】安装包检查具体内容及实现方法

    一.安装包检查的具体包含内容有哪些? 1.安装包检查的一般内容包括: 安装包基本信息检查: 文件大小: xx MB 包名: com.xx 名称:  xx 本次安装包证书与外网证书对比一致性:是 版本号 ...

  8. Android端恶意锁屏勒索应用分析

    一.前言 5月12日,一场全球性互联网灾难悄然而至,一款名为WannaCRY的PC端恶意勒索软件利用NSA泄漏的危险漏洞“永恒之蓝”,给100多个国家和地区10万台电脑造成了巨大的损失.到2017年为 ...

  9. Android实战:手把手实现“捧腹网”APP(一)-----捧腹网网页分析、数据获取

    Android实战:手把手实现"捧腹网"APP(一)-–捧腹网网页分析.数据获取 Android实战:手把手实现"捧腹网"APP(二)-–捧腹APP原型设计.实 ...

随机推荐

  1. mysql常用单行函数

    一.大小写控制函数 LOWER(str)    将str的值全部置为小写字母 select LOWER('ABC'); --结果: LOWER('ABC') abc UPPER(str)    将st ...

  2. openlayers3 画扇形

    参考了http://www.cnblogs.com/lingxue3769/archive/2011/11/01/2231409.html同学的博客 和 百度知道https://zhidao.baid ...

  3. vuex 笔记

    Vuex 笔记 一个简单的状态管理 单一数据源: const sourceOfTruth = {} const vmA = new Vue({ data: sourceOfTruth }) const ...

  4. 《算法导论》 调用RANDOM(0,1),实现RANDOM(a,b)的过程

    描述RANDOM(a,b)的过程的一种实现,它只调用RANDOM(0,1).作为a和b的函数,你的程序的期望运行时间是多少?(RANDOM(0,1)以等概率输出0或者1,RANDOM(a,b)以等概率 ...

  5. java二

    一,面向对象 面向对象,似乎是太抽象了点,没人敢拍着胸脯说我面向对象学到了100%,纵然如此,了解面向对象的思想对于学好java等面向对象编程语言有着莫大的好处,因为一通百通,同样是面向对象,等你精通 ...

  6. nslookup命令

    nslookup命令可以从本地DNS服务器中查看所有的IP地址和域名信息(它就像一本互联网电话簿).例如,想要找到www.baidu.com的IP地址就可以使用nslookup命令. nslookup ...

  7. WeedFS问题收集

    weed fs FAQ Moving files to a different server Q: Hello,is it possible to move manually the .dat and ...

  8. 关于shape_trans (ConnectedRegions, ConvexRegions, 'convex')的作用于对比

    * crystal.hdev: extraction of hexagonally shaped crystals via local thresholding and region post-pro ...

  9. phpstorm 16.1 注册码

    phpstorm 2016.1 的注册与phpstorm 10 相同,可以采用:“服务器注册” 方式进行注册,又快又方便. 服务器注册:http://idea.qinxi1992.cn IDEA 20 ...

  10. ORACLE 实例及RAC

    ORACLE 实例及RAC 一.问题 (1)现象 部署一个sh脚本到生产oracle服务器上,该sh脚本负责读取外系统提供的txt文件,然后用sql loader入库,由oracle服务器的cront ...