我使用leakcanery
在Android中查找内存泄漏。我发现并修复了所有Activity
泄漏。 (惊讶地知道有那么多BTW!)。
我还为所有refWatcher
添加了观看Fragment
。
问题1:还有什么我应该注意的,可能会导致明显的内存泄漏吗?
问题2:由于Fragment
拥有对其Fragment
的引用,因此无法查看Activity
泄漏是多余的?我收到了通知,对吗? : - /
问题3:当我检查android studio中的内存监视器时,它显示了内存使用量随时间的增长。这是一个巨大的内存泄漏的迹象还是Android操作系统是善良的,它只是给了我更多的内存?我怎么能找到肯定的?
答案 0 :(得分:5)
还有什么我应该注意的,可能会导致明显的内存泄漏吗?
static
几乎可以保证内存泄漏。Request
)也会产生内存泄漏,因为它们包含对父Activity
的隐式引用,如果Activity
1}}在请求调用完成之前消失,发生内存泄漏。由于
Fragment
拥有对其Fragment
的引用而未查看Activity
泄漏是多余的?
Fragment
没有"持有"对Activity
的引用。该引用由FragmentManager
提供。但是框架在内部管理这个,所以你不必担心它。
当我检查android studio中的内存监视器时,它显示内存使用量随时间的增长。这是一个巨大的内存泄漏的迹象还是Android操作系统是善良的,它只是给了我更多的内存?我怎么能找到肯定的?
应用程序的内存增长是自然的,并且在随后的垃圾收集器传递中清理内存。在具有虚拟机和自动垃圾收集器的语言中,程序员几乎无法控制内存分配。除了创建微小的内存泄漏之外,程序员几乎无法搞砸内存管理过程。