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中看到「泄漏」。但請記住,通過確保放棄不需要保留的內容(從列表/集/地圖,關閉文件等中移除內容),可以始終修復這些內容。您正在查看的持久性內存可能來自某些靜態變量,因爲它們綁定到了這些類。