Android | App内存优化 之 全面理解MAT

简介: Android | App内存优化 之 全面理解MAT
**本文以上一篇博客
《Android | App内存优化 之 内存泄漏 要点概述 以及 解决实战》获得的 堆转储文件为例,
介绍一下 MAT工具;**
  • **MAT工具上侧有一系列的可选项,

现在看一下第一项,OverView,
也就是一个概览信息,
第一行是大小、Class对象、Object的数量、类加载器等等,
行末的Unreachable Objects Histogram可以点击查看可被回收的 但是仍然在内存当中 没被回收的对象**




  • **第二个图标按钮是Histogram单词直方图的意思),

该视图可以列出来,
某一个具体的Class它到底有多少实例,一个某一类型实例它的个数,及其
Shallow Heap,堆中 此类型所有实例 自身的总大小(以字节为单位),
Retained Heap,为 此类型的所有实例 而 保留的内存总大小(以字节为单位),
(在引用链上,此类型的所有实例占用的内存);同时我们可以在这个视图中(视图第一行),检索具体的某一个类的信息,
从而来判断该对象有没有存在内存泄漏的可能,
比如我们在上一篇博客《Android | App内存优化 之 内存泄漏 要点概述 以及 解决实战》
检索的就是MemoryLeakActivity

接着,
在下图中,该图标的下拉菜单中,
还有一个Group by package的菜单项:
也就是可以让视图中的实例,以包名的形式来进行摆放:默认是以类的形式进行摆放的,
Group by Class
通过Group by package视图查看形式
我们可以很容易地找到MemoryLeakActivity接下来,点击某一个实例,右键,
选择List objects -> with incoming references
我们在排查内存泄漏的过程中,
应该选择with incoming reference进行分析才行,!!!!!
查看 本(我们这个) 类型实例 被 谁/哪些类型实例 所引用,!!!!!
导致我们这个类型实例自身不能被回收,!!!!!
【!!!!
因为之所以内存泄漏,
就是某些没用的实例没有被及时正确回收,
而某个实例被别人引用了,也就回收不了了;
!!!!】
List objects下有两个菜单项,
with incoming reference
incoming 指过来
即指的是 引用到该选中实例的实例,
查看 本 类型实例 被 谁/哪些类型实例 所引用

with outcoming references
outcoming 指出去
被该选中实例引用的实例,
即查看本 类型实例 引用了 谁/哪些类型实例;)**



  • **第三个按钮,Dominator Tree(Dominator n.支配者,支配力,统治者;)

视图展示 每一个类型对象的 支配树(注意是每一个对象!!):关注百分比比较大的对象;
观察其能不能被回收,
以及为什么不能被回收;这里注意Percentage这个栏目,
显示的值 即该类型对象总共占了所有对象的百分之几;
比如说我们还是检索一下MemoryLeakActivity(注意这个视图也能够检索!!)
这里也能够,右键,
选择List objects选项:
!!!!
Histogram是基于 类型 分析,只分析类型, 不具体到某个实例,
Dominator Tree是基于 实例 分析, 具体到 某个实例;
!!!!
**





**第四个按钮是OQL,即 对象查询语言 , Object Query Language,
可以像检索数据库一样 检索 对象:
**





**第五个按钮,Thread OverView,
可以查看堆转储文件记录时,有多少线程在执行,
及其线程相关的信息**




Top Consumers 和 Leak Suspect

**Top Consumers 列出来那么占用内存比较高的对象;
Biggest Objects可以查看相关的更详细的信息;Leak Suspect则,
提供了两个Problem Suspect 自动化分析,配置有Detail按钮可以查看,
供我们参考;**






参考自
相关文章
|
6月前
|
Android开发 数据安全/隐私保护 开发者
Android自定义view之模仿登录界面文本输入框(华为云APP)
本文介绍了一款自定义输入框的实现,包含静态效果、hint值浮动动画及功能扩展。通过组合多个控件完成界面布局,使用TranslateAnimation与AlphaAnimation实现hint文字上下浮动效果,支持密码加密解密显示、去除键盘回车空格输入、光标定位等功能。代码基于Android平台,提供完整源码与attrs配置,方便复用与定制。希望对开发者有所帮助。
110 0
|
9月前
|
JavaScript 前端开发 Android开发
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
321 13
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
4月前
|
存储 Android开发 数据安全/隐私保护
Thanox安卓系统增加工具下载,管理、阻止、限制后台每个APP运行情况
Thanox是一款Android系统管理工具,专注于权限、后台启动及运行管理。支持应用冻结、系统优化、UI自定义和模块管理,基于Xposed框架开发,安全可靠且开源免费,兼容Android 6.0及以上版本。
342 4
|
7月前
|
数据采集 JSON 网络安全
移动端数据抓取:Android App的TLS流量解密方案
本文介绍了一种通过TLS流量解密技术抓取知乎App热榜数据的方法。利用Charles Proxy解密HTTPS流量,分析App与服务器通信内容;结合Python Requests库模拟请求,配置特定请求头以绕过反爬机制。同时使用代理IP隐藏真实IP地址,确保抓取稳定。最终成功提取热榜标题、内容简介、链接等信息,为分析热点话题和用户趋势提供数据支持。此方法也可应用于其他Android App的数据采集,但需注意选择可靠的代理服务。
299 11
移动端数据抓取:Android App的TLS流量解密方案
|
6月前
|
缓存 编解码 Android开发
Android内存优化之图片优化
本文主要探讨Android开发中的图片优化问题,包括图片优化的重要性、OOM错误的成因及解决方法、Android支持的图片格式及其特点。同时介绍了图片储存优化的三种方式:尺寸优化、质量压缩和内存重用,并详细讲解了相关的实现方法与属性。此外,还分析了图片加载优化策略,如异步加载、缓存机制、懒加载等,并结合多级缓存流程提升性能。最后对比了几大主流图片加载框架(Universal ImageLoader、Picasso、Glide、Fresco)的特点与适用场景,重点推荐Fresco在处理大图、动图时的优异表现。这些内容为开发者提供了全面的图片优化解决方案。
239 1
|
9月前
|
JavaScript 搜索推荐 Android开发
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
348 8
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
|
9月前
|
数据采集 JavaScript Android开发
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
341 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
9月前
|
Dart 前端开发 Android开发
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
259 4
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
存储 编解码 缓存
|
存储 编解码 Android开发
Android内存优化-Bitmap内存优化
在日常开发中,我们不免会使用到Bitmap,而bitmap确实实在在的是内存使用的 “大户”,如何更好的使用 bitmap,减少其对 App内存的使用,是我们开发中不可回避的问题。
296 0
Android内存优化-Bitmap内存优化

热门文章

最新文章