区分内存泄漏和正常内存使用情况

时间:2016-09-25 00:45:54

标签: android android-fragments memory-management memory-leaks android-recyclerview

我正在创建一个Android应用程序,而我最近才开始检查内存使用情况。

我的应用程序包含一个主要活动和两个片段(片段A包含带有图像的回收视图,片段B包含图像和一些文本框)。

我注意到,当我启动应用程序时,我的内存分配大约为20MB。通过在Fragment A中的recyclerview上上下滚动(不加载任何新数据),我可以使内存使用率不间断地增加(直到垃圾回收)。

另外,如果我来回从片段A到片段B,我可以使内存分配不间断地增加(直到垃圾收集)。 20 - > 23 - > 29,..等等。直到它达到60+并收集垃圾。

如果我以大约23MB的分配启动应用程序,并进行一些滚动并在片段之间来回移动,我的内存使用量可能介于40到60+ MB之间。

当我连续多次使用Android Studio进行垃圾收集时,我可以将其恢复到原来但不是一直到23(通常为30)。

这是一个内存泄漏,因为我无法垃圾收集我开始使用的100%内存?

1 个答案:

答案 0 :(得分:0)

不,严格来说,由于垃圾收集,你不能在java中发生这种内存泄漏。

你会得到"泄漏"在java中,如果你保留对不再使用的东西的引用(I.E.一个大的列表或你永远不会删除的东西)。但请记住,通过确保丢弃对您不需要保留的内容的引用(从列表/集合/映射中删除内容,关闭文件等),可以始终修复这些内容。您正在查看的持久性内存可能来自某些静态变量,因为它们已绑定到类。