java - Android内存泄漏的潜在原因

标签 java android memory-leaks garbage-collection

我正在使用 leakcanery 来查找 Android 中的内存泄漏。我发现并修复了所有 Activity 漏洞。 (很惊讶知道有这么多顺便说一句!)。 我还为我所有的 Fragment 添加了 watch refWatcher

问题 1:还有什么我应该注意的,可能会导致明显的内存泄漏吗?

问题 2: 是不是观察 Fragment 泄漏是多余的,因为 Fragment 持有对其 Activity 的引用?无论如何我都会收到通知,对吗? :-/

问题 3: 当我在 android studio 中检查内存监视器时,它显示内存使用量随时间增长。这是一个巨大的内存泄漏的迹象,还是 Android 操作系统很好,它只是给我更多的内存?我怎样才能确定?

最佳答案

Is there anything else that I should watch that may cause a noticeable memory leak?

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

Isn't watching Fragment leaks redundant since a Fragment holds a reference to its Activity?

Fragment 不“持有”对Activity 的引用。该引用由 FragmentManager 提供。但框架会在内部对此进行管理,因此您无需担心。

When I check the memory monitor in android studio it shows the memory usage growth over time. Is it a sign of a giant memory leak or Android OS is kind and it is just giving me more memory? How can I find for sure?

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

关于java - Android内存泄漏的潜在原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30431718/

相关文章:

android - 按下时按钮状态未按预期工作

android - 在图像移动/调整大小/旋转操作中在图像周围放置一些指示符

C 内存泄漏问题

Python 内存泄漏 - 已解决,但仍然感到困惑

java - bin文件加载进度条

java - 验证两个引用指向 Eclipse 中的同一对象

java - 如何识别两个 JComboBox 中的哪一个生成了 itemchanged 事件?

android - ImageView 正在重新调整大小 - 为什么?

android - 一些有助于发现内存泄漏

java - JSF2 : commandLink without javascript