Android中内存泄漏的潜在原因

Rez*_*adi 6 java android garbage-collection memory-leaks

我正在使用leakcaneryAndroid中查找内存泄漏.我发现并修复了所有Activity泄漏.(惊讶地知道有那么多BTW!).我还refWatcher为我Fragment的所有人添加了手表.

问题1:我还应该注意哪些可能会导致明显的内存泄漏?

问题2:Fragment由于Fragment持有对它的引用,是不是在观察泄漏多余Activity?我收到了通知,对吗?: - /

问题3:当我检查android studio中的内存监视器时,它显示了内存使用量随时间的增长.这是一个巨大的内存泄漏的迹象还是Android操作系统是善良的,它只是给了我更多的内存?我怎么能找到肯定的?

Y.S*_*Y.S 5

还有什么我应该看的可能会导致明显的内存泄漏吗?

  • 声明成员字段static几乎可以保证内存泄漏.
  • 超出父类生命周期的匿名类(如Volley Request)也会产生内存泄漏,因为它们包含对父项的隐式引用Activity,如果Activity在请求调用完成之前消失,则会发生内存泄漏.

是否Fragment因为Fragment持有对它的引用而没有看多余的漏洞Activity

A Fragment不"持有"对a的引用Activity.参考文献由FragmentManager.提供.但是框架在内部管理它,所以你不必担心它.

当我检查android studio中的内存监视器时,它会显示内存使用量随时间的增长.这是一个巨大的内存泄漏的迹象还是Android操作系统是善良的,它只是给了我更多的内存?我怎么能找到肯定的?

应用程序的内存增长是自然的,并且在随后的垃圾收集器传递中清理内存.在具有虚拟机和自动垃圾收集器的语言中,程序员几乎无法控制内存分配.除了创建微小的内存泄漏之外,程序员几乎无法搞砸内存管理过程.