我正在使用eclipse的MAT来分析我的Android项目中的内存使用情况。

我用过

try {
            Debug.dumpHprofData("/mnt/sdcard/myapp.hprof");
            Log.i("","Calle d dumpHprofData");
         } catch (IOException e) {
             // TODO Auto-generated catch block
             e.printStackTrace();
          }


在我的onCreate()..并生成myapp.hprof文件。然后使用“ hprof-conv myapp.hprof mat.hprof”将其转换为mat.hprof

我使用Eclipse打开了“ mat.hprof”,它显示了巨大的泄漏。

我不习惯于如何分析和解决泄漏问题。

例如:

 7,321 instances of "java.lang.String", loaded by "<system class loader>" occupy 457,648 (23.06%) bytes.

Keywords
java.lang.String


我无法使用MAT打开与其相关的源文件。

请帮忙。

谢谢
斯内哈

最佳答案

转换hprof文件后...尝试从MAT工具中打开文件...文件->打开堆转储->浏览并选择您的文件。

现在,单击直方图视图,然后在顶部输入活动的名称。您将能够看到浅堆和保留堆。

对象应为1。如果大于1,请检查实时裁判。

右键单击您的类名称->选择“ GC根目录路径”->排除弱引用。

希望这可以帮助。

10-08 15:52