
我正在使用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打开与之相关的源文件。
请帮帮忙。
谢谢
Sneha
发布于 2012-05-18 17:22:49
一旦您转换了hprof文件...尝试从MAT工具打开文件...file -> Open heap Dump ->浏览并选择您的文件。
现在单击直方图视图,并在顶部输入活动的名称。您将能够看到浅堆和保留堆。
Object应为1,如果大于1,请检查实时refereces。
右键单击您的类名,选择Path to GC roots -> exclude弱引用。
希望这能有所帮助。
发布于 2014-10-15 05:09:33
看Google I/O 2011: Memory management for Android Apps吧。最常见的内存泄漏来源,使用MAT的实际例子-所有内容都在那里。
此外,Memory Analysis for Android Applications还介绍了如何使用MAT,并提供了其他有用材料的链接。
最后,Investigating Your RAM Usage介绍了如何(如果有)触发内存泄漏。
https://stackoverflow.com/questions/10633696
复制相似问题