我正在创建一个Android应用程序,而我最近才开始检查内存使用情况。
我的应用程序包含一个主要活动和两个片段(片段A包含带有图像的回收视图,片段B包含图像和一些文本框)。
我注意到,当我启动应用程序时,我的内存分配大约为20MB。通过在Fragment A中的recyclerview上上下滚动(不加载任何新数据),我可以使内存使用率不间断地增加(直到垃圾回收)。
另外,如果我来回从片段A到片段B,我可以使内存分配不间断地增加(直到垃圾收集)。 20 - > 23 - > 29,..等等。直到它达到60+并收集垃圾。
如果我以大约23MB的分配启动应用程序,并进行一些滚动并在片段之间来回移动,我的内存使用量可能介于40到60+ MB之间。
当我连续多次使用Android Studio进行垃圾收集时,我可以将其恢复到原来但不是一直到23(通常为30)。
这是一个内存泄漏,因为我无法垃圾收集我开始使用的100%内存?
答案 0 :(得分:0)
不,严格来说,由于垃圾收集,你不能在java中发生这种内存泄漏。
你会得到"泄漏"在java中,如果你保留对不再使用的东西的引用(I.E.一个大的列表或你永远不会删除的东西)。但请记住,通过确保丢弃对您不需要保留的内容的引用(从列表/集合/映射中删除内容,关闭文件等),可以始终修复这些内容。您正在查看的持久性内存可能来自某些静态变量,因为它们已绑定到类。