如何用MAT分析Android程序的内存泄露

android 内存泄露-抓出重要函数-GL_OUT_OF_MEMORY-GL error: Out of memory!OpenGLRenderer 一般log有错误的内存泄露提示“GL error:  Out of memory!”"GL_OUT_OF_MEMORY",我们就需要使用工具去一步一步的获取哪些模块类里面的方法出了问题,然后一个一个去尝试找出问题,以下是个人经历:问题点:蓝牙传输多个文件,引发蓝牙报停,log打印crash:OpenGLRenderer: GL error:  Out of memory!             ... 阅读详情

如何用MAT分析Android程序的内存泄露
听语音

  • |
  • 浏览:3103
  • |
  • 更新:2014-08-26 13:56
  • |
  • 标签:android 内存 
  • 如何用MAT分析Android程序的内存泄露 1
  • 如何用MAT分析Android程序的内存泄露 2
  • 如何用MAT分析Android程序的内存泄露 3
  • 如何用MAT分析Android程序的内存泄露 4
  • 如何用MAT分析Android程序的内存泄露 5
  • 如何用MAT分析Android程序的内存泄露 6
  • 如何用MAT分析Android程序的内存泄露 7
分步阅读

Android应用开发过程中,稍一不小心经常会出现内存泄露,如何用工具来检测下我们的应用是否存在内存泄露呢?MAT就是一款非常好用的分析应用内存使用情况的工具,使用起来也非常简单,下面小编就来和大家分享下具体的操作步骤。

工具/原料

  • Eclispe
  • MAT

方法/步骤

  1. 在Eclipse中新建一个Android工程,名字叫做:memoryleak。功能很简单,只有一个MainActivity和一个ImageUtil。我们在MainActivity中使用ImageUtil来加载图片。注意我们的ImageUtil是单例类。在创建的时候需要传入context。

    如何用MAT分析Android程序的内存泄露
    如何用MAT分析Android程序的内存泄露
    如何用MAT分析Android程序的内存泄露
  2. 应用起来以后,转屏。转屏以后,MainActivity会重建,导致ImageUtil重新加载图片。很不幸的是,因为ImageUtil并没有重建,还持有之前的Context,也就是之前的那个MainActivity实例。多次转屏以后,我们在Eclipse的DDMS里面,导出内存映像文件。导出的文件叫做:com.example.memoryleak.hprof。

    如何用MAT分析Android程序的内存泄露
  3. DDMS导出的内存映像文件并不能被MAT直接使用。需要转换一下。在命令行输入:hprof-conv com.example.memoryleak.hprof memoryleak.hprof。

    如何用MAT分析Android程序的内存泄露
  4. 用MAT打开memoryleak.hprof。

    如何用MAT分析Android程序的内存泄露
  5. 点击“Histogram”

    如何用MAT分析Android程序的内存泄露
  6. 在Class Name后面的输入框输入应用的名字:com.example.memoryleak。

    如何用MAT分析Android程序的内存泄露
  7. 可以看到有4个MainActivity实例,如果没有泄露的情况下只应该有一个实例,说明存在内存泄露。在MainActivity上点击右键->"Merge Shortest Paths To GC Roots"->"exclude all phantom/weak/soft etc.refrences"。

    如何用MAT分析Android程序的内存泄露
  8. 在打开的页面中,点击可以看到详细的引用信息。

    如何用MAT分析Android程序的内存泄露
  9. 9

    上图中可以看出来是ImageUtil引用了一个MainActivity的实例。这样就找到了泄露的根源,就可以进行处理了。怎么样,是不是很简单,如果觉得有用,请点击投票,小编会继续努力谢谢你的支持哦。

OPNET卫星节点仿真避坑指南:为什么你的STK轨道文件导入后位置不对? 本文深入解析OPNET卫星节点仿真中STK轨道文件导入后位置异常的常见问题,揭示坐标系差异(ECI与ECF)、时间基准不匹配等关键因素。通过修改.SA文件头标识、统一时间基准等解决方案,帮助工程师避免仿真失真,提升卫星通信系统仿真的准确性。特别适用于STK与OPNET协同工作的卫星网络仿真场景。 阅读详情

相关推荐

基于立创开源ESP32步进电机驱动板硬件设计与优化实践

本文详细介绍了基于立创开源平台的ESP32步进电机驱动板硬件设计与优化实践。重点解析了ESP32-PICO-D4与A4950驱动芯片的选型搭配、电源电路噪声隔离、PCB布局布线技巧以及保护电路设计,为开发者提供了从原理图到PCB的完整优化方案,有效提升驱动板的性能与稳定性。

7z8x2c4v6b9的博客 645

分析android程序的内存 mat,怎么用MAT分析Android程序内存泄露

Android应用开发过程中,稍一不小心经常会出现内存泄露,如何用工具来检测下我们的应用是否存在内存泄露呢?下面学习啦小编就给大家整理收集了用MAT分析Android程序的内存泄露的方法,供你学习阅览,希望能对你有帮助!用MAT分析Android程序的内存泄露的方法在Eclipse中新建一个Android工程,名字叫做:memoryleak。功能很简单,只有一个MainActivity和一个Ima...

weixin_28760959的博客 216

python-调用动态链接库dll/so的方法

使用python ctyeps CDLL来调用linux下的so动态链接库或windows下的dll动态链接库

XIAOXIANG233233的博客 3662

在Eclipse中使用MAT分析Android程序内存使用状况(转)

对于Android这种手持设备来说,通常不会带有太大的内存,而且一般用户都是长时间不重启手机,所以编写程序的时候必须要非常小心的使用内存,尽量避免有内存泄露的问题出现。通常分析程序中潜在内存泄露的问题是一件很有难度的工作,一般都是由团队中的资深工程师负责,而且随着程序代码量的提高,难度还会逐步加大。 今天要介绍一个在Eclipse中使用的内存分析工具——MAT(Eclipse Memory An...

weixin_34274029的博客 110

HBuilderX远程开发环境配置:Windows SSH连接实操

详细介绍如何在Windows系统中通过SSH连接远程服务器,配置HBuilderX进行高效远程开发,提升编码协作效率。全程实操演示,轻松掌握hbuilderx与远程环境的无缝对接。

weixin_35751194的博客 1190

用R语言做WGCNA分析全步骤一(附代码解读)【转载】

代码逐句分析一、文章来源二、基因共表达网络构建及模块识别1.数据导入、清洗及预处理2.检查过度缺失值和离群样本3.聚类做离群样本检测4.载入临床特征数据三、自动构建网络及识别模块1.确定合适的软阈值:网络拓扑分析2.一步构建网络和识别模块 一、文章来源 初学WGCNA,觉得博主的代码写的很不错,但其中很多代码在第一遍看的时候有很多地方不理解,后查阅了很多资料,终于看明白了,于是写了一篇笔记,记录自己的学习心得,有不准确的地方,还望各位大佬们不吝赐教~ 原文链接:WGCNA简明指南 二、基因共表达网络构建及模

qq_43138237的博客 2万+

简述用 MAT 分析 Android 应用OOM

OOM(OutOfMemoryError) 相信是所有 Android 开发者遇到的最多的 Error,因此找出个中缘由是非常重要。 这里用到的分析工具主要是 Eclipse MAT 插件http://www.eclipse.org/mat/ Eclipse MAT(Memory Analyzer Tool)主要用于分析Java程序OOM 时 JVM 的 Heap dump文件

xyjikl 746

详解AXI4-Lite接口(3)--AXI4-Lite接口IP源码仿真及分析(Master接口)

通过本文您会学到:1、了解AXI4-Lite_Master接口的逻辑实现;2、加深Xilinx IP、仿真工具的使用;3、提高阅读时序图的能力。

孤独的单刀 6445

Android的内存泄露测试 mat

Android的内存泄露测试 分类: linux 2012-01-05 10:36 118人阅读 评论(0)收藏 举报   Android下,如何进行内存泄露的测试,除了长时间运行的间接测试,有没有工具帮助我们进行这方面测试呢? 首先,安装 MAT 和其他插件的安装非常类似,MAT 支持两种安装方式,一种是“单机版“的,也就是说用户不必安装 Eclipse IDE 环境,MAT

JESSE_ZHAO_503的专栏 2426

knowhere | 第一课:项目导论与环境搭建

摘要 本课程是Knowhere项目的第一课,重点介绍项目整体架构和开发环境搭建。Knowhere定位为AI Agent的文档记忆基础设施,通过解析多格式文档并保留结构化信息(如章节层级、表格语义等),为Agent提供可导航的文档知识。项目采用Python monorepo结构,核心包括: apps/api:FastAPI服务,处理HTTP请求和流程调用 apps/worker:Celery服务,执行文档解析等耗时任务 packages/shared-python:共享基础设施层 课程明确了各层职责边界,并推

weixin_43674738的博客 151

Vue3 - 实现用户上传本地视频文件到服务器+上传进度条+暂停续传+中断取消上传等,视频上传后可在线播放预览已上传的视频,视频文件上传视频回显示例代码(支持Element、Antd等upload组件

实现视频上传和视频预览,vue3实现视频上传功能,上传视频回显,视频流上传播放功能,vue与axios上传视频并显示上传进度,upload组件实现视频文件上传视频回显,upload组件实现视频上传及进度条展示,视频上传及实时进度条显示,视频上传过程中如何中断上传,VUE3+element 上传视频,大文件分片上传+断点续传,axios大文件切片上传,Vue3上传视频后如何播放预览,上传本地视频到后端服务器及在线预览播放视频+移除视频+进度条上传,将已选视频上传服务端并可预览视频,详细实现选择视频并上传到服务

🏆 前端领域优质创作者 3112

Android应用程序内存分析

Dalvik虚拟机支持垃圾收集,但是这不意味着你可以不用关心内存管理。你应该格外注意移动设备的内存使用,在上面内存空间是受到限制的。在这篇 文章里面,我们来看看Android SDK里面的一些内存剖析工具(profiling tools)是如何帮助我们修整应用程序的内存使用。 一些内存使用问题是很明显的,例如,如果在每次用户触摸屏幕的时候应用程序有内存泄露,将会有可能触发OutOfMemor

石头的专栏 522

DSP的CLA调试技巧

本文介绍了基于TMS320F28377D的CLA(Control Law Accelerator)开发实战教程,涵盖基础配置、编程、调试与优化全流程。主要内容包括:CLA核心特性及其作为实时控制协处理器的优势;开发环境搭建与工程配置要点;CLA任务调度、数据交换及编程约束;调试技巧如断点设置和性能分析方法;进阶应用案例(批量除法运算)及优化策略;以及推荐的学习资源和硬件平台。教程强调数据一致性和任务同步问题,为快速上手CLA开发提供实用指导。

1040

Android中如何查找内存泄露

Android中如何查找内存泄露

fjjjyf的博客 207

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Android应用程序的内存泄露分析

Dalvik虚拟机支持垃圾收集,但是这不意味着你可以不用关心内存管理。你应该格外注意移动设备的内存使用,在上面内存空间是受到限制的。在这篇文章里面,我们来看看Android SDK里面的一些内存剖析工具(profiling tools)是如何帮助我们修整应用程序的内存使用。 一些内存使用问题是很明显的,例如,如果在每次用户触摸屏幕的时候应用程序有内存泄露,将会有可能触发OutOfMemory

mengweiqi33的专栏 1169

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

monkey测试中日志分析和内存泄露分析

一.monkey日志分析 1、程序无响应的问题:在日志中搜索“ANR” 2、崩溃问题:在日志中搜索“Exception“ 看前后执行事件进行复现 如果Monkey测试顺利执行完成,在log的最后,会打印出当前执行事件的次数和所花费的时间;// Monkey finished代表执行完成。 Monkey执行中断,在log的最后也能查看到当前已执行的次数。 二、monkey内存泄露 1.内存泄露发现方法 执行monkey测试时有时会有内存泄露情况,可以进行排查 a.手机弹出out of memory对话框–基

u014036251的博客 1132

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

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

Android应用程序的内存分析

英文原文地址:http://android-developers.blogspot.com/2011/03/memory-analysis-for-android.html The Dalvik runtime may be garbage-collected, but that doesn't mean you can ignore memory management. You

liujie33852964的专栏 762

android应用开发详解(五)--------------内存泄露的检测

1、安装MAT插件 eclipse---->help-------->install new sof

唇边的一抹微笑 650

Android 官方博客 - Android应用程序的内存分析

Dalvik虚拟机支持垃圾收集,但是这不意味着你可以不用关心内存管理。你应该格外注意移动设备的内存使用,在上面内存空间是受到限制的。在这篇 文章里面,我们来看看Android SDK里面的一些内存剖析工具(profiling tools)是如何帮助我们修整应用程序的内存使用。 一些内存使用问题是很明显的,例如,如果在每次用户触摸屏幕的时候应用程序有内存泄露,将会有可能触发OutOfMemor

极致的专注 无限的热情 2158

Android 内存分析工具

Dalvik 虚拟机支持垃圾收集,但是这不意味着你可以不用关心内存管理。你应该格外注意移动设备的内存使用,手机和平板的内存空间是受到限制的。在这篇文章里面,我们来看看Android SDK里面的一些内存剖析工具(profiling tools)是如何帮助我们修整应用程序的内存使用。一、 内存泄露一些内存使用问题是很明显的,例如,如果在每次用户触摸屏幕的时候应用程序有内存泄露,将会有可能触发OutO

阳光岛主 2万+

利用monkey自动监控app内存泄露

内存泄露:是都不再使用的对象持续占有内存,造成内存空间的浪费 工具和命令: HPROF文件: MAT工具 生成HPROF文件命令 查看应用内存命令:adb shell dumpsys meminfo 转换为MAT可读文件指令: hprof 基本测试步骤: 运行monkey或者固定自动化用例 监控内存值,如果出现过大等递增异常 adb shell am dumpheap package ...

qq_22753843的博客 1022

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

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

weixin_42398730的博客 327

Android内存分析工具

Dalvik虚拟机支持垃圾收集,但是这不意味着你可以不用关心内存管理。你应该格外注意移动设备的内存使用,在上面内存空间是受到限制的。在这篇 文章里面,我们来看看Android SDK里面的一些内存剖析工具(profiling tools)是如何帮助我们修整应用程序的内存使用。一些内存使用问题是很明显的,例如,如果在每次用户触摸屏幕的时候应用程序有内存泄露,将会有可能触发OutOfMemoryErr...

weixin_30279671的博客 77
上一篇: Android Studio使用过程中碰到问题及解决方案整理
下一篇: android listview去掉分割线
rongbinjava
博客等级 码龄11年 15粉丝 83原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值