Android如何追踪内存泄漏?

时间:2013-01-07 09:21:31

标签: android memory allocation mat

我有一个类似Pulse的应用程序及其处于测试阶段       https://play.google.com/store/apps/details?id=com.braindigit.nepal.khabar

我有一个主要布局,其中包含一个名为LinearLayout的{​​{1}},在此布局中,我动态添加和删除另一个布局名称NewsCategoryHolder。这个CategoryView包含{{1}和其他CategoryView。 为了进一步导航,我实施了HorizontalListView,每次点击标签views都会删除其所有观看次数,然后添加ActionbarSherlock Tab。 每个NewsCategoryHolder都有自己的CategoryView,可以从服务器或数据库加载数据。 在每次添加和删除CategoryView时,我删除了所有视图,将其适配器指定为null,甚至将AsyncTask保持为null。但是当我从CategoryView导航到Context时,应用程序的内存会增加。我觉得我的应用程序出现了一些内存泄漏的情况。 我已经阅读了有关Tab和其他分析器的所有教程,链接和视频,但我无法确定应用消耗内存的确切部分或Tab无法使用的点收集对象引用。

我只是想找到内存消耗高的位置,但无法做到这一点。我已经附加了* .hprof http://news.braindigit.com/saved/android3201806337409456011.hprof文件,只是希望得到一些关于其分析和我的应用程序包的帮助名称为MAT

1 个答案:

答案 0 :(得分:0)

我发现内存消耗高的主要原因。从MAT开始,从布局和各种语句中删除各种视图后,我发现我使用的是asset文件夹中的字体是罪魁祸首。

headingText.setTypeface(Typeface.createFromAsset(context.getAssets(), DataHolder.FONT_PATH));

通过执行此操作,可能会引用Context或引用TypeFace并且从未garbage collected。但删除此行代码修复了我的应用上的所有内存泄漏问题。

此问题可以使用此处描述的技术解决 Typeface memory leak