【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不发生变化的页面,但数据会不变更新的逻辑
【Android端 APP 内存分析】使用工具进行APP的内存分析的更多相关文章
- 如何做好 Android 端音视频测试?
在用户眼中,优秀的音视频产品应该具有清晰.低延时.流畅.秒开.抗丢包.高音效等特征.为了满足用户以上要求,网易云信的工程师通过自建源站,在SDK端为了适应网络优化进行QoS优化,对视频编码器进行优化, ...
- Android内存优化(三)详解内存分析工具MAT
前言 在这个系列的前四篇文章中,我分别介绍了DVM.ART.内存泄漏和内存检测工具的相关知识点,这一篇我们通过一个小例子,来学习如何使用内存分析工具MAT. 1.概述 在进行内存分析时,我们可以使用M ...
- 使用Chrome开发者工具调试Android端内网页(微信,QQ,UC,App内嵌页等)
使用Chrome开发者工具调试Android端内网页(微信,QQ,UC,App内嵌页等) 前言 移动端页面调试一直是好多朋友头疼的问题,iOS 由于其封闭的特性和整体较高的性能,整体适配相对好做,调试 ...
- Android内存泄漏的检测流程、捕捉以及分析
https://blog.csdn.net/qq_20280683/article/details/77964208 Android内存泄漏的检测流程.捕捉以及分析 简述: 一个APP的性能,重度关乎 ...
- Android内存泄露---检测工具篇
内存使用是程序开发无法回避的一个问题.如果我们毫不在意肆意使用,总有一天会为此还账,且痛不欲生...所以应当防患于未然,把内存使用细化到平时的每一行代码中. 内存使用概念较大,本篇先讲对已有app如何 ...
- 【Android端 APP GPU过度绘制】GPU过度绘制及优化
一.Android端的卡顿 Android端APP在具体使用的过程中容易出现卡顿的情况,比如查看页面时出现一顿一顿的感受,切换tab之后响应很慢,或者具体滑动操作的时候也很慢. 二.卡顿的原因 卡顿的 ...
- 【Android端APP 安装包检查】安装包检查具体内容及实现方法
一.安装包检查的具体包含内容有哪些? 1.安装包检查的一般内容包括: 安装包基本信息检查: 文件大小: xx MB 包名: com.xx 名称: xx 本次安装包证书与外网证书对比一致性:是 版本号 ...
- Android端恶意锁屏勒索应用分析
一.前言 5月12日,一场全球性互联网灾难悄然而至,一款名为WannaCRY的PC端恶意勒索软件利用NSA泄漏的危险漏洞“永恒之蓝”,给100多个国家和地区10万台电脑造成了巨大的损失.到2017年为 ...
- Android实战:手把手实现“捧腹网”APP(一)-----捧腹网网页分析、数据获取
Android实战:手把手实现"捧腹网"APP(一)-–捧腹网网页分析.数据获取 Android实战:手把手实现"捧腹网"APP(二)-–捧腹APP原型设计.实 ...
随机推荐
- SQL Server查询分组结果中第一条记录的方法
select * from ( select mp.MsgID,m.Content,m.CreatorID,m.CreateTime,ROW_NUMBER() over(partition by m ...
- html基础 样式
html样式:本文演示如何在head中添加样式信息使文本格式化 <html> <head> <style type="Text/css"> h1 ...
- Spring配置
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "- ...
- 监听自定义ItemRender的事件
<mx:Repeater id="rp" dataProvider="{_layersInfo}"> <mx:VBox label=&q ...
- Android学习起步 - Button按钮及事件处理
按钮和文本框算是比较简单的控件了,以下主要讲按钮的事件响应,三种写法(匿名内部类响应事件.外部类响应事件.本类直接响应事件) 点击按钮后文本框中会显示 ”按钮被单击了”,先看效果: 以下是这个界面的布 ...
- 好用的一个从SharePoint导出小工具
1. 输入 Site Url(Site Collection), 然后点"load"按钮 2.选择Web后,点选需导出的文档库,然后点"Next"按钮 ...
- C#泛型代理、泛型接口、泛型类型、泛型方法
//http://www.cnblogs.com/JeffreySun/archive/2012/11/14/2770211.html //http://www.baqima.com/a/2628.h ...
- oracle 分析函数
认识分析函数 分析函数是什么? 分析函数是oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计值. 分析函数 ...
- QTP操作word文档
QTP可以对word文档进行操作,这里最主要展示的是向word文档写入内容,并保存的功能. Option explicit Dim wordApp Set wordApp = createobject ...
- 删除数组中重复的元素(JSON)
先上一个基础的: var a = [1,2,3,3,4]; var b = []; for (var i = 0; i < a.length; ++i) { if (b.indexOf(a[i] ...