0

我有一个应用程序,就像 Pulse 一样,它处于测试阶段 https://play.google.com/store/apps/details?id=com.braindigit.nepal.khabar

我有一个包含LinearLayout命名的主布局,NewsCategoryHolder在这个布局上我动态添加和删除另一个布局名称CategoryView。这CategoryView包含HorizontalListView和其他views。对于导航,我已经实现ActionbarSherlock Tab了,每次单击选项卡NewsCategoryHolder都会删除其所有视图,然后添加CategoryView. 每个CategoryView都有自己的AsyncTask从服务器或数据库加载数据。并且在每次添加和删除时,CategoryView我都删除了它的所有视图,将它的适配器分配给 null,甚至将Context它保留为 null。但是当我从TabTab,应用程序的内存增加。我觉得这是我的应用程序发生一些内存泄漏的情况。我已经浏览了所有关于MAT和其他分析器的教程、链接和视频,但我无法确定应用程序消耗内存的确切部分或GC无法收集对象引用的点。

我只是想找到内存消耗高的位置,但无法做到这一点。我已附加 *.hprof http://news.braindigit.com/saved/android3201806337409456011.hprof文件,只是想要一些帮助对其分析,我的应用程序包名称是com.braindigit.nepal.khabar

4

1 回答 1

0

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

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

因此,这样做可能Context正在被引用或被TypeFace引用并且从未被引用garbage collected。但是删除这行代码修复了我的应用程序上的所有内存泄漏问题。

此外,可以使用此处描述的技术解决此问题 字体内存泄漏

于 2013-01-08T14:41:26.397 回答