转自http://blog.csdn.net/hudashi/article/category/947550
1、首先确定是否有内存泄露及哪个程序造成。
1.1、内存泄露已弹出out of memory对话框的情况。
这种情况很简单,直接看对话框就知道是哪个应用的问题了。然后再分析该应用是否是因为内存泄露造成的out of memory对话框。
1.2、对于有内存泄露,但没造成弹出out of memory对话框的情况
使用《Android中如何查看内存》中介绍的各种方法进行分析,确定是否有内存泄露以及是哪个进程造成的内存泄露。
2、生成hprof文件,用MAT进行分析。
生成hprof文件可以在DDMS选中进程点击窗口左上角的"dump hprof file"按钮来直接生成,也可以通过在程序加代码中来生成
代码2:
voidgenerateHprof()
{
String packageName=getApplicationInfo().packageName;
StringhpFilePath="/data/data/"+packageName+"/input.hprof";
try{
//Debug.dumpHprofData("/sdcard/input.hprof");
Debug.dumpHprofData(hpFilePath);
}catch(IOException e) {
//TODOAuto-generated catch block
e.printStackTrace();
}
}
建议使用代码生成hprof,然后使用《Android内存泄露利器(hprof篇)》中的工具自动提取多个hprof文件,然后用MAT进行比较分析。
在MAT导入.hprof文件以后,MAT会自动解析并生成报告,点击Dominator
Tree,并按Package分组,选择自己所定义的Package类,比较各个类在不同时期的Retained Heap,找出可疑类,然后选择该类,点右键,选中show retained Set项,参看Retained Heap的详细信息,进一步找出嫌疑项。
3、在代码中查找内存泄露。
根据在MAT找到的内存泄露信息,参照《Android内存泄漏简介》进一步在内存中查找内存泄露的原因并解决。
另外如果代码很简单,可以直接参照《Android内存泄漏简介》在内存中查找内存泄露的原因并解决。
分享到:
相关推荐
Android使用MAT查找内存泄漏-附件资源
对于内存泄漏,在Android中如果不注意的话,还是很容易出现的,尤其是在Activity中,比较容易出现,下面我就说下自己是如何查找内存泄露的。 首先什么是内存泄漏? 内存泄漏就是一些已经不使用的对象还存在于内存之...
LeakCanary是适用于Android的可靠内存泄漏检测库。 它通过对Android Framework内部的深入了解,可以有效地检测泄漏并缩小每次... LeakCanary帮助在开发过程中查找和修复这些泄漏,因此您再也不必经历另一个OOM崩溃。
MTuner是用于Windows,PlayStation 4和3,Android和其他平台的C / C ++内存分析器和内存泄漏查找器。 MTuner利用一种新颖的方法进行内存分析和分析,保留了整个基于时间的内存操作历史记录。 通过查询整个数据集,...
本课程主要讲解在Android端怎么去排查开发的程序是否发生内存泄漏,如果发生了内存泄漏怎么去定位查找,教会如何使用Android Profiler,MAT 工具
其实RxJava引起的内存泄漏是我无意中发现了,本来是想了解Retrofit与RxJava相结合中是如何通过适配器模式解决的,结果却发现了RxJava是会引起内存泄漏的,所有想着查找一下资料学习一下如何解决RxJava引起的内存泄漏...
帮助你在开发阶段方便的检测出内存泄露的问题,使用起来更简单方便。 可以参考以下文章: LeakCanary 中文使用说明 18.Android Postfix Completion 可根据后缀快速完成代码,这个属于拓展吧,系统已经有这些...
是时候跟它说再见了,leakcanary的横空出世,让令人头疼的OOM查找变得如此轻松,只需要简单集成,就能帮你找出内存泄漏,还各种贴心提醒,真的是超赞。不过它也不是万能的,有心学好Android开发的同学,内存问题排查...
MTuner:MTuner是C/C ++内存分析器和内存泄漏查找器,适用于Windows,PlayStation 4和3,Android和其他平台
2.2.4. Activity 中四个重要的概念 .. 30 2.3. 旋转屏幕重新加载 Acitivity .......... 33 第 3 章 第三章 ................... 40 3.1. 缓冲界面 ......................................... 40 3.1.1. Demo1 ........
简介 Databinding是谷歌的一个官方支持库,它...这也可以提高应用程序的性能,并有助于防止内存泄漏和空指针异常。 Androidx集成Databinding 1、将dataBinding元素添加到 build.gradle应用程序模块中 android { ......
(iOS独有)11、【内存泄漏】 找出App中所有的内存泄漏的问题。四、视觉工具1、【颜色吸管】 方便设计师 UI 捉虫的时候,查看每一个组件的颜色值是否设置正确;2、【组件检查】 可以抓取任意一个UI控件,查看它们的...