【问题标题】:Nulling variables of Fragment on onDestroy() [duplicate]在 onDestroy() 上清空 Fragment 的变量 [重复]
【发布时间】:2013-09-19 20:01:34
【问题描述】:

我是否应该在 onDestroy(或 onDetach)方法中明确地将片段的所有变量设置为 null 以避免内存泄漏?或者没有必要,当片段被“销毁”时它们将被GCed。最佳实践是什么?提前致谢!

【问题讨论】:

    标签: java android performance android-fragments


    【解决方案1】:

    只是插件,

    1. 如果您的代码中有任何服务正在运行,请停止它。
    2. 如果您已注册到任何广播或任何其他听众,请取消注册
    3. 如果您打开了任何游标,请将其关闭。
    4. 如果您有任何位图,请回收它们。

    【讨论】:

    • 好的补充,谢谢!
    【解决方案2】:

    您无需担心这一点。 GC 会处理它。在 Java 中,您几乎必须尝试发生内存泄漏(是的,有可能,但非常罕见)。所以,别担心。如果您确实将变量设置为null,您最终只会在不需要的代码上浪费时间,并且会增加后续维护。 Java 中的 GC 在销毁未引用的变量和对象方面做得很好。

    【讨论】:

    • 我设法在一个 Android 应用程序中发生了内存泄漏(由于 OutOfMemoryError,它在一段时间后崩溃了),我必须循环访问一些对象并将一些引用设置为 null 以使生活更轻松垃圾收集器。但一个好的经验法则是:“不要修复没有破坏的东西”。
    • 是的,我知道它们以前发生过,而且有可能,但非常罕见。不过我同意,不要修复没有损坏的东西:)
    • 只是一个提示:对于检测泄漏,这个库非常有用github.com/square/leakcanary
    猜你喜欢
    • 2014-10-26
    • 1970-01-01
    • 1970-01-01
    • 2014-11-12
    • 2019-08-12
    • 2012-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多