Jave中的引用分为3种:
强引用:引用为空的时候,Java的垃圾回收器会处理。一般来说自己写的程序大部分都是强引用。
软引用:堆内存不够的时候,Java的垃圾回收器会处理这类引用。
弱引用:Jave的垃圾回收器每次都会回收这类引用。
如何用MAT来分析,前提是Android开发和测试的工具安装完整,SDK,Eclipse:
1.打开Eclipse
2.选择 Help->Install New Software;
3.在Work with中添加站点:http://download.eclipse.org/mat/1.0/update-site/(这个地址可能会变化,但是新的地址可以在官方网站上找到:http://www.eclipse.org/mat/downloads.php )
4.生成.hprof文件:插入SD卡(Android机器很多程序都需要插入SD卡),并将设备连接到PC,在Eclipse中的DDMS中选择要测试的进程,然后点击 Update Heap 和Dump HPROF file两个Button。
.hprof 文件会自动保存在SD卡上,把 .hprof 文件拷贝到PC上的\ android-sdk-windows\tools目录下。这个由DDMS生成的文件不能直接在MAT打开,需要转换。
运行cmd打开命令行,cd到\ android-sdk-windows\tools所在目录,并输入命令hprof-conv xxxxx.hprof yyyyy.hprof,其中xxxxx.hprof为原始文件,yyyyy.hprof为转换过后的文件。转换过后的文件自动放在android-sdk-windows\tools 目录下。
OK,到此为止,.hprof文件处理完毕,可以用来分析内存泄露情况了。
5.打开MAT:
在Eclipse中点击Windows->Open Perspective->Other->Memory Analysis
6.导入.hprof文件
在MAT中点击 File->Open File,浏览到刚刚转换而得到的.hprof文件,并Cancel掉自动生成报告,点击Dominator Tree,并按Package分组,选择自己所定义的Package 类点右键,在弹出菜单中选择List objects->With incoming references。
这时会列出所有可疑类,右键点击某一项,并选择Path to GC Roots->exclude weak/soft references,会进一步筛选出跟程序相关的所有有内存泄露的类。据此,可以追踪到代码中的某一个产生泄露的类。
分享到:
相关推荐
android 内存泄露测试.
Android处理内存泄漏的代码例子。用于演示避免内存泄漏的几种方法,包括:关闭游标、重用适配、回收图像、注销监听、释放引用。
android系统分析内存泄露测试android系统分析内存泄露测试android系统分析内存泄露测试
android 内存检测 使用eclipse + mat实现android 内存检测
android内存泄露的检测和排查,已经附带一个锁屏内存泄露的例子分析。
本篇文章主要介绍了用Android Studio检测内存泄露的问题的解决方法,Android Studio在为我们提供了良好的编码体验的同时,也提供了许多对App性能分析的工具,下面我们一起来了解一下。
附件是Android下检测ndk和jni内存泄漏的demo,可以用于native中malloc和free的检测。使用方法(参见博客):https://blog.csdn.net/zhuyong006/article/details/88537499
编写没有内存泄漏的程序,对提高程序稳定性,提高用户体验具有重要的意义。这篇文章主要介绍了详解Android内存泄漏检测与MAT使用,有兴趣的可以了解一下。
android手机测试中如何查看内存泄露
Android native 层代码内存泄漏问题调试利器
内存检测代码,主要通过重载的方式检测已经实现的代码中是否有内存泄漏,详细细节见code,在这里不多作说明,毕竟空间不多啊,呵呵,一切尽在代码中
栈区:当方法执行时,会在栈区内存中创建方法体内部的局部变量,方法结束后自动释放内存。堆区:通常存放new出来的对象。由Java垃圾回收器回收。栈内存用来存放局部变量和函数参数等。它是先进后出的队列,进出一一...
上面是官方文档给出的介绍,LeakCanary是一个在android上检测内存泄漏的依赖。 使用方法 只需要在你的build.gradle中添加如下依赖即可。 debugImplementation ‘com.squareup.leakcanary:leakcanary-android:2.2’ ...
Android ADT自带有内存检测工具,可以查看内存的占用情况,但是无法查看内存的详细信息, 我们需要安装Eclipse的内存分析工具MAT插件,来dump 出详细的内存情况,进行分析
基于静态分析方法的Android应用内存泄漏检测模型.pdf
内存泄露是Android开发中常见的性能问题。本文作者以真实案例演示内存泄露从发现、分析定位到最终解决的全过程。一款优秀的Android应用,不仅要有完善的功能,也要有良好的体验,而性能是影响体验的一个重要因素。...
并根据与Activity、Service、ContentProvider、Broadcast Receiver等Android组件的相关性归类介绍了一些常见的典型内存泄漏情景,最后分析总结内存泄漏代码特征,并设计一种基于符号执行的内存泄漏静态代码检测方案...
作者taoweiji,源码DemoAndroidMemoryLeak,Android开发中难免会遇到各种内存泄漏,如果不及时发现处理,会导致出现内存越用越大,可能会因为内存泄漏导致出现各种奇怪的crash,甚至可能出现因内存不足而导致APP崩溃...