Android性能优化—内存分析工具MAT的使用(二)

MAT(Memory Analyzer Tool)工具使用超详细版 概述 MAT(Memory Analyzer Tool)工具是一款功能强大的]ava堆内存分析器。可以用于查找内存泄漏以及查看内存消耗情况。MAT是基于Eclipse开发的,不仅可以单独使用,还可以作为插件的形式嵌入在Eclipse中使用。是一款免费的性能分析工具,使用起来非常方便。大家可以在https://www.eclipse.org/mat/downloads.php下载并使用MAT。 ! MAT可以分析heap dump文件。在进行内存分析时,只要获得了反映当前设备内存映像的hprof文件,通过M 阅读详情

我们通过Android性能优化—内存分析工具MAT的使用(一)大概了解了Android到MAT的转换过程。现在我们熟悉下MAT 中常规的使用。

如图所示:Mat工具栏中有诸多功能,在我们平时使用过程中,基本上是使用红色框框那些个功能了:
①Overview ②Histogram ③Dorminator Tree ④Object Query Language

Overview

用MAT打开一个hprof文件后会进入如下的overview界面,或者和这个界面类似的leak suspect界面,overview界面会以饼图的方式显示当前消耗内存最多的几类对象,可以使我们对当前内存消耗有一个直观的印象。

通过OverView图我们可以大概的指导这个hprof文件基本清楚,如基本信息、Biggest Objects等。左击Biggest Objects饼图的有色区域,如图

这时我们可以发现,点击的Biggest Object一些基本信息在图中左侧展示,并且弹出了基于此对象操作的弹框。

Histogram

通过这个柱状图,我们可以清晰发现某个class有多少个对象(Objects),占用了多少内存。

  1. Class Name:类名

  2. Objects:对象数

  3. Shallow Heap:对象自身占用的内存大小,不包括它引用的对象。

  4. Retained Heap:当前对象被GC后,从Heap上总共能释放掉的内存。
    此外我们还可以通过正则匹配需要查看的class,如匹配包名含有threadtest字样的的所有的类名,如下图:

    右击其中一个class,弹出了基于此类操作的弹框。

Dorminator Tree

Histogram是基于类的,那么Dorminator Tree 就是基于具体的对象的,如图:

通过这个柱状图,我们可以清晰发现某个对象,占用了多少内存,占用内存比例是多少。

  1. Class Name:类名

  2. Shallow Heap:对象自身占用的内存大小,不包括它引用的对象。

  3. Retained Heap:当前对象被GC后,从Heap上总共能释放掉的内存。

  4. Percentage:对象占用内存的百分比(Retained Heap百分比)。
    我们通过正则匹配需要查看的对象,如匹配包名含有threadtest字样的的所有的对象,且右击匹配出来的对象,弹出基于此对象操作的弹框,如下图:

Object Query Language

OQL涉及点比较多,将在下一章节讲解

操作弹框

也许读者在整片文章中见得最多就是基于某某操作的弹框,如下图:

这里主要说明一些最常用的操作:
List objects -> with incoming references:查看这个对象持有的外部对象引用(成员变量)
List objects -> with outcoming references:查看这个对象被哪些外部对象引用(别人的成员变量)
Path To GC Roots -> exclude all phantim/weak/soft etc. references:查看这个对象的GC Root,不包含虚、弱引用、软引用,剩下的就是强引用。从GC上说,除了强引用外,其他的引用在JVM需要的情况下是都可以 被GC掉的,如果一个对象始终无法被GC,就是因为强引用的存在,从而导致在GC的过程中一直得不到回收,因此就内存溢出了。
Path To GC Roots -> exclude weak/soft references(常用):查看这个对象的GC Root,不含弱引用和软引用所有的引用.
**Merge Shortest path to GC root **:找到从GC根节点到一个对象或一组对象的共同路径

案例说明

此案例是查看一个Handler泄露的问题,一个activity不断的进入后退出,并且Handler 延迟10s中后执行一个命令代码,以下是相关代码

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        TextView textView = new TextView(this);
        textView.setText("hello 你好");
        setContentView(textView);
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {

            }
        }, 10 * 1000);
    }
}

通过MAT分析对应的hprof文件,如下图(通过正则匹配了threadtest):

如图我们会发现了有四个MainActivity对象,此时我分别对这四个MainActivity实例进行exclude weak/soft references分析,我们就会发现以下图:

由以上图我们可以看出,MessageQueue队列持有了MainActivity对象从而导致MainActivity及时释放。

Android内存优化(五)详解内存分析工具MAT 在这个系列的前四篇文章中,我分别介绍了DVM、ART、内存泄漏和内存检测工具的相关知识点,这一篇我们通过一个小例子,来学习如何使用内存分析工具MAT。 阅读详情

相关推荐

性能优化——内存分析工具的使用

本文将介绍比较常用的的内存泄漏检测工具,包括HeapSnapShot、HeapViewer、MAT一、HeapSnapShot的使用HeapSnapShot意思是堆快照,通过堆内存的信息来分析内存泄漏的问题。1、启动HeapSnapShot2、显示Heap SnapShot面板点击截图部分的左上角,可以看到有个App heap,点开,里面还有Image heap、Zygote heap,分别代码a...

很正经的程序员 1万+

发布即巅峰,万字详解:Java性能调优六大工具:MAT内存分析工具

MAT内存分析工具 MAT是MemoryAnalyzerTool的简称,它是一款功能强大的Java堆内存分析器,可以用于查找内存泄漏以及查看内存消耗情况。MAT是基于Eclipse开发的一款免费的性能分析工具,读者可以在http://www.eclipse.org/mat/上下载并使用MAT。

m0_63256311的博客 1603

Android 性能优化(二)—— 通过工具检测内存分析情况

app性能优化包括很多方面,其中重要的部分就是内存分析,主要是分析是否存在内存泄露,下面就是通过几种工具进行分析: 1、Lint:android studio自带分析工具,可以进行检测,常见的内存泄露可以检测出来 2、LeakCanary:内存泄露检测工具,只要app集成了LeakCanary,当app启动时候,出现内存泄露就会在通知栏发送通知,开发者就可以点进去查看具体的内存泄露详细信息,包括具体问题在哪一行 3、Memory Profile:Android studio自带的分析工具,可以查看当前a

明天的增加的博客 503

使用MAT工具分析性能

MAT的全称是Eclipse Memory Analyzer,是一款强大的内存泄漏分析工具,不需要安装解压之后直接使用就可以了,只需要把hprof文件导入进去就可以使用

lzy的博客 1177

MAT内存分析工具详解与应用

MAT(Memory Analyzer Tool)是专门针对Java heap的分析工具,它是由Eclipse基金会托管的一款开源项目。自从2008年首次发布以来,MAT已经经历了多个版本的迭代,每个版本都在性能、稳定性和新功能上有了显著的提升。MAT的版本发展经历了从初步支持到功能丰富、性能卓越的过程,目前已经成为了内存分析领域中不可或缺的一款工具。MAT的设计理念是让Java开发者能以较低的学习成本,快速定位和解决内存相关问题。

weixin_30476025的博客 1367

右腿驱动电路设计:从共模干扰原理到生物电采集实战

在生物电信号采集领域,共模干扰是影响测量精度的核心挑战之一,其本质源于环境电磁场通过容性耦合在人体表面产生的感应电流。根据欧姆定律,由于人体组织阻抗的不均衡性,共模电流会在不同测量点产生差异化的压降,从而转化为难以滤除的差分噪声。为解决这一问题,右腿驱动技术应运而生,它通过负反馈原理主动抵消干扰,显著提升系统的共模抑制比。该技术广泛应用于心电图、脑电图等医疗电子设备中,是确保微弱生理信号质量的关键环节。本文结合工程实践,深入剖析了右腿驱动电路中的仪表放大器选型、反馈环路稳定性设计以及PCB布局布线要点,为高

weixin_31476015的博客 445

JVM | 内存调优实战 - MAT工具问题排查与分析

内存管理在JVM性能优化中占有举足轻重的地位。不合理的内存使用不仅会导致应用的不稳定,还会严重影响用户体验。因此,对内存溢出问题的及时发现和解决尤为关键。本文通过详细的案例分析,让我们了解到了如何定位和解决JVM内存溢出的问题。通过对JVM参数的调整、代码的优化和合理的垃圾收集策略,我们可以确保应用的稳定运行并最大化性能。在今后的开发中,希望大家能够将这些经验和策略运用得当,持续优化和提高应用的性能。

StudyBrainEx 2446

ESP-IDF 5.4下esp32-camera组件编译报错?手把手教你解决头文件缺失问题

本文详细解析了ESP-IDF 5.4环境下esp32-camera组件编译时出现的头文件缺失问题,提供了从目录结构优化、CMake配置到VSCode智能感知设置的完整解决方案。针对第三方组件集成难题,文章特别强调了PRIV_REQUIRES依赖声明和路径配置的关键作用,帮助开发者高效解决编译错误并建立稳定的开发环境。

weixin_28829629的博客 309

JVM - 性能优化工具Mat

MAT()工具是一款功能强大的]ava堆内存分析器。可以用于查找内存泄漏以及查看内存消耗情况。MAT是基于Eclipse开发的,不仅可以单独使用,还可以作为插件的形式嵌入在Eclipse中使用。是一款免费的性能分析工具,使用起来非常方便。

知行 2万+

PCB印刷电路缺陷检测实战:从数据集准备到模型训练全流程解析

本文详细解析了PCB缺陷检测从数据集准备到模型训练的全流程。重点介绍了PKU-Market-PCB数据集的特点与下载方法,并提供了数据格式转换、模型选择(如YOLOv8)与训练配置的实战代码。针对PCB小目标检测的难点,文章给出了数据分析和模型优化的具体策略,帮助读者构建高效的缺陷检测系统。

weixin_29065791的博客 547

OnePose++: Keypoint-Free One-Shot Object Pose Estimation without CAD Models

算法:首先采用LoFTR的细匹配模块,将粗匹配点周围的小窗口内,通过对比特征找到最相似的位置,细化当前特征点的位置。算法:PnP算法,利用3D点和2D投影点的对应关系,计算相机相对于物体的6D姿态(位置朝向)。算法:使用COLMAP,对2D粗匹配对(不依赖传统关键点匹配)进行特征轨迹计算并生成半稠密点云,每个3D点包含坐标和对应的2D投影点。算法:LoFTR粗匹配模块,将每一个像素点视为伪关键点,生成半稠密的2D匹配对。输入:优化后的3D、当前视图的2D特征点。输出:粗半稠密点云以及物体的特征轨迹。

雨落倾城的博客 888

android mat 分析工具,Android性能优化—内存分析工具MAT的使用(二)

我们通过Android性能优化—内存分析工具MAT的使用(一)大概了解了Android到MAT的转换过程。现在我们熟悉下MAT 中常规的使用。如图所示:Mat工具栏中有诸多功能,在我们平时使用过程中,基本上是使用红色框框那些个功能了:①Overview ②Histogram ③Dorminator Tree ④Object Query LanguageOverview用MAT打开一个hp...

weixin_28756347的博客 215

Cocos Creator 3D音频定位实战:从原理到沉浸感实现

3D音频定位是游戏开发中实现沉浸感的关键技术,其核心原理基于HRTF(头部相关传输函数)模型,模拟声音在空间中的传播与双耳感知差异。这项技术通过赋予声音空间坐标、距离衰减和方向属性,将音频从背景元素提升为可交互的环境线索,极大增强了虚拟世界的真实感与玩家的空间认知。在工程实践中,开发者需要深入理解声源、听者、衰减曲线与多普勒效应等基础概念,并合理运用音频池、优先级管理与动态混音等技术手段来平衡效果与性能。对于Cocos Creator开发者而言,无论是使用引擎原生的AudioSource组件构建轻量级方案,

weixin_30972263的博客 295

Android性能优化学习(二)内存泄露分析工具Android Monitor 及MAT使用

---------------内存泄露例子---------------- 单例模式导致内存对象无法释放而导致内存泄露 MainActivity在内存当中泄露了。 这个故事告诉我们能用Application的context就用Application的 CommonUtil生命周期跟MainActivity不一致,而是跟Application进程同生同死。 旋转3次:会在内

qq_21158307的博客 505

青龙人形机器人硬件平台设计全解析:从构型到控制系统的实战指南

本文深度解析了青龙人形机器人硬件平台的设计全流程,从需求分析、构型设计到核心系统实现。文章详细阐述了其43个自由度的仿生构型、高动态性下肢设计、灵巧作业系统以及分布式控制架构,并探讨了旋转关节与直线关节等关键技术选型,为开发者提供了从理论到实践的完整硬件设计指南。

weixin_29248313的博客 384

SerDes系列之 SSC扩频时钟技术

扩频时钟,又称展频(SSC-Spread Spectrum Clocking),当前PCIE、DDR、USB等几乎所有的高速接口都支持SSC的功能。电子工程师在日常的电气测试中经常与之接触,在电磁传导和辐射发射验证过程中,经常需要使用到芯片的SSC功能,它的物理表现形式,就是信号的比特率会在一个很小的范围内浮动,多见于周期性变化的时钟信号。

一只豌豆象的博客 3443

android

android性能的优化. 1主要是响应速度,UI刷新速度 采用TraceView是Android特有的数据采集和分析工具,主要用于数据分析工具,采集需要DDMS或者Debug。当停止采集的时候,DDMS会触发TraceView来浏览采集数据。 2查看内存泄漏 点击Android Mo...

122

与本地电脑PDF文档对话的PDF问答程序

紧接着,从PDF文档中提取文本,这部分代码的作用是遍历PDF文档中的每一页,并使用extract text(0方法提取每一页的文本内容,然后将这些文本内容累加到raw text变量中。PDF问答程序的实现方式是利用LangChain已实现的向量存储、嵌入,以及使用查询和检索相关的链来获取外部数据集及处理文档,在进行相关性检索后进行合并处理,将其置入大语言模型的提示模板中,实现与PDF文件交流的目的。例如,你正在为一项重要的报告寻找资料,你必须知道你需要查找的关键词,然后在大量的信息中筛选出你需要的部分。

weixin_43961909的博客 1422

【Android 内存优化】使用 Memory Analyzer ( MAT ) 工具分析内存 ( hprof 文件转换 | MAT 工具下载 | MAT 工具使用 )

一、 hprof 文件转换、 二、 下载 Memory Analyzer ( MAT ) 工具、 三、 Memory Analyzer ( MAT ) 工具打开内存快照、

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 7152

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Android性能优化-MAT工具的简单使用

1.MAT的简单介绍MAT(Memory Analyzer Tool) 是基于heap dumps来进行内存分析的工具,一个基于Eclipse的内存分析工具,是一个快速、功能丰富的JAVA heap分析工具,它可以帮助我们查找内存泄漏和减少内存消耗。 2.下载安装 下载地址 http://www.eclipse.org/mat/downloads.php 地址里面有插件包和独立安装包,如下图

_StriveG的专栏 6839

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Android 性能优化之MAT分析内存泄漏

http://www.iconfont.cn/ https://icomoon.io/app/#/select https://github.com/mikepenz/Android-Iconics http://mp.weixin.qq.com/s?__biz=MzAxMTI4MTkwNQ==&mid=2650821086&idx=1&sn=080bc2cfaa04947b974bf6273bbd

寒江蓑笠的专栏 798

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

MAT内存分析工具的使用

步骤:(以Eclipse为例) 1下载MAT工具(下载地址:http://www.eclipse.org/mat/downloads.php) 2在Android SDK的platform-tools目录中将hprof-conv.exe拷贝到自定义的文件夹(我将其拷贝到D:\sun\mat文件夹下,目的是为了将要生成的文件跟SDK文件分隔开) 3打开Eclipse 进入DDMS界面选择要分析

sqyNick 3635

Android 性能优化之使用MAT分析内存泄露问题

我们平常在开发Android应用程序的时候,稍有不慎就有可能产生OOM,虽然JAVA有垃圾回收机,但也不能杜绝内存泄露,内存溢出等问题,随着科技的进步,移动设备的内存也越来越大了,但由于Android设备的参差不齐,可能运行在这台设备好好的,运行在那台设备就报OOM,这些适配问题也是比较蛋疼的,比如我们平常运行着一个应用程序,运行的好好的,突然到某个Activity就给你爆出一个OOM的错误,你可能会以为是这个Activity导致的内存泄露,你会想到也有可能是内存有泄露吗?内存泄露就像一个定时炸弹,随时都有

Mobile Internet developer 4万+

【Android -- 性能优化】内存分析工具 — MAT

MAT 是 Memory Analyzer tool 的缩写,是一种快速,功能丰富的Java 堆分析工具,能帮助你查找内存泄漏和减少内存消耗。很多情况下,我们需要处理测试提供的 hprof 文件,分析内存相关问题,那么 MAT 也绝对是不二之选。Eclipse 可以下载插件结合使用,也可以作为一个独立分析工具使用...

Kevin Learn Android 1117

android 性能优化之内存泄漏分析工具-Mat使用

android 内存泄漏之 mat工具使用

天燹的博客 1232
上一篇: Android性能优化—内存分析工具MAT的使用(一)
下一篇: Android性能优化—MAT之OQL详解(三)
码农驿站
博客等级 码龄10年 5粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值