Android中如何查找内存泄露

1、首先肯定是否有内存泄露及哪一个程序形成。 php

1.一、内存泄露已弹出out of memory对话框的状况。 eclipse

这种状况很简单,直接看对话框就知道是哪一个应用的问题了。而后再分析该应用是不是由于内存泄露形成的out of memory对话框。 工具

1.二、对于有内存泄露,但没形成弹出out of memory对话框的状况 spa

使用《Android中如何查看内存》中介绍的各类方法进行分析,肯定是否有内存泄露以及是哪一个进程形成的内存泄露。 blog

二、生成hprof文件,用MAT进行分析。 进程

生成hprof文件能够在DDMS选中进程点击窗口左上角的"dump hprof file"按钮来直接生成,也能够经过在程序加代码中来生成 ip

代码2 内存

    void generateHprof() get

    { input

            String packageName=getApplicationInfo().packageName;

            String hpFilePath="/data/data/"+packageName+"/input.hprof";

            try {

                  //Debug.dumpHprofData("/sdcard/input.hprof");

                  Debug.dumpHprofData(hpFilePath);

            } catch (IOException e) {

                  // TODO Auto-generated catch block

                  e.printStackTrace();

            }

    }

建议使用代码生成hprof,而后使用《Android内存泄露利器(hprof篇)中的工具自动提取多个hprof文件,而后用MAT进行比较分析。

MAT导入.hprof文件之后,MAT会自动解析并生成报告,点击Dominator Tree,并按Package分组,选择本身所定义的Package,比较各个类在不一样时期的Retained Heap,找出可疑类,而后选择该类,点右键,选中show retained Set ,参看Retained Heap的详细信息,进一步找出嫌疑项。

三、在代码中查找内存泄露。

  根据在MAT找到的内存泄露信息,参照《Android内存泄漏简介》进一步在内存中查找内存泄露的缘由并解决。

另外若是代码很简单,能够直接参照《Android内存泄漏简介》在内存中查找内存泄露的缘由并解决。

相关文章
相关标签/搜索