1

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

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

我注意到,当我启动应用程序时,我的内存分配大约为20MB。通过上下滚动片段A中的recyclerview(不加载任何新数据),我可以使内存使用量不间断地增加(直到垃圾收集)。另外,如果我从片段A前后移动片段B,我可以使内存分配不停地增加(直到垃圾收集)。 20 - > 23 - > 29,.​​.等,直到它达到60+,并获得垃圾收集。

如果我在大约23MB分配的位置启动应用程序,并在片段之间来回滚动和来回移动,则我的内存使用量可能介于40和60+ MB之间。

当我使用Android Studio进行多次垃圾收集时,我可以将其重新取回,但不能一直到23(通常为30ish)。

这是内存泄漏,因为我无法收集100%的内存我开始与?

回答

0

不,严格来说,你不能在Java中有这样的内存泄漏,因为它是垃圾收集。

如果您保留对不再使用的内容的引用(I.E.是一个大列表或您永远不会删除的内容),那么您将在Java中看到“泄漏”。但请记住,通过确保放弃不需要保留的内容(从列表/集/地图,关闭文件等中移除内容),可以始终修复这些内容。您正在查看的持久性内存可能来自某些静态变量,因为它们绑定到了这些类。