我正在使用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根目录路径”->排除弱引用。
希望这可以帮助。