`
阿尔萨斯
  • 浏览: 4197502 次
社区版块
存档分类
最新评论

Android中如何查找内存泄露

 
阅读更多
转自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使用MAT查找内存泄漏-附件资源

    Android Studio+MAT实战内存泄漏

    对于内存泄漏,在Android中如果不注意的话,还是很容易出现的,尤其是在Activity中,比较容易出现,下面我就说下自己是如何查找内存泄露的。 首先什么是内存泄漏? 内存泄漏就是一些已经不使用的对象还存在于内存之...

    LeakCanary:Android的内存泄漏检测库-开源

    LeakCanary是适用于Android的可靠内存泄漏检测库。 它通过对Android Framework内部的深入了解,可以有效地检测泄漏并缩小每次... LeakCanary帮助在开发过程中查找和修复这些泄漏,因此您再也不必经历另一个OOM崩溃。

    MTuner:MTuner是CC ++内存分析器和内存泄漏查找器,适用于Windows,PlayStation 4和3,Android和其他平台

    MTuner是用于Windows,PlayStation 4和3,Android和其他平台的C / C ++内存分析器和内存泄漏查找器。 MTuner利用一种新颖的方法进行内存分析和分析,保留了整个基于时间的内存操作历史记录。 通过查询整个数据集,...

    Android内存泄漏

    本课程主要讲解在Android端怎么去排查开发的程序是否发生内存泄漏,如果发生了内存泄漏怎么去定位查找,教会如何使用Android Profiler,MAT 工具

    Android性能优化之利用Rxlifecycle解决RxJava内存泄漏详解

    其实RxJava引起的内存泄漏是我无意中发现了,本来是想了解Retrofit与RxJava相结合中是如何通过适配器模式解决的,结果却发现了RxJava是会引起内存泄漏的,所有想着查找一下资料学习一下如何解决RxJava引起的内存泄漏...

    Android插件

    帮助你在开发阶段方便的检测出内存泄露的问题,使用起来更简单方便。 可以参考以下文章: LeakCanary 中文使用说明 18.Android Postfix Completion 可根据后缀快速完成代码,这个属于拓展吧,系统已经有这些...

    十大热门Android开源项目 之 leakcanary

    是时候跟它说再见了,leakcanary的横空出世,让令人头疼的OOM查找变得如此轻松,只需要简单集成,就能帮你找出内存泄漏,还各种贴心提醒,真的是超赞。不过它也不是万能的,有心学好Android开发的同学,内存问题排查...

    MTuner可执行文件

    MTuner:MTuner是C/C ++内存分析器和内存泄漏查找器,适用于Windows,PlayStation 4和3,Android和其他平台

    Android学习系列教程实例.pdf

    2.2.4. Activity 中四个重要的概念 .. 30 2.3. 旋转屏幕重新加载 Acitivity .......... 33 第 3 章 第三章 ................... 40 3.1. 缓冲界面 ......................................... 40 3.1.1. Demo1 ........

    Databinding使用、Databinding原理、Androidx集成Databinding、Databinding源码分析、Databinding双向绑定原理

    简介 Databinding是谷歌的一个官方支持库,它...这也可以提高应用程序的性能,并有助于防止内存泄漏和空指针异常。 Androidx集成Databinding 1、将dataBinding元素添加到 build.gradle应用程序模块中 android { ......

    DoraemonKit研发助手-其他

    (iOS独有)11、【内存泄漏】 找出App中所有的内存泄漏的问题。四、视觉工具1、【颜色吸管】 方便设计师 UI 捉虫的时候,查看每一个组件的颜色值是否设置正确;2、【组件检查】 可以抓取任意一个UI控件,查看它们的...

Global site tag (gtag.js) - Google Analytics