【问题标题】:Understanding LeakCanary memory leak stack trace了解 LeakCanary 内存泄漏堆栈跟踪
【发布时间】:2019-07-22 14:36:57
【问题描述】:

我有一个简单的新闻应用,最近我开始收到一些用户(来自 Firebase Crashlytics)的 OOM 崩溃报告。经过一番研究,我发现原因可能是由于内存泄漏引起的。所以我安装了 LeakCanary,最终在使用 apo 时,我可以看到它报告了潜在的问题。

有经验的可以帮我理解问题所在吗?我已附上日志

【问题讨论】:

    标签: leakcanary


    【解决方案1】:

    https://square.github.io/leakcanary/fundamentals/#how-do-i-fix-a-memory-leak

    总结:

    • 泄漏跟踪中的每个节点都是一个 Java 对象,可以是类、对象数组或实例。
    • 往下看,每个节点都有对下一个节点的引用。在 UI 中,该引用为紫色。在 Logcat 表示中,引用位于以向下箭头开头的行。
    • 泄漏跟踪的顶部是垃圾收集 (GC) 根。 GC 根是始终可访问的特殊对象。
    • 泄漏跟踪的底部是泄漏实例。这个实例被传递给 RefWatcher.watch() 以确认它会被垃圾回收,最终它没有被垃圾回收触发 LeakCanary。
    • 从 GC 根到泄漏实例的引用链阻止了对泄漏实例进行垃圾回收。如果你能识别出在那个时间点不应该存在的引用,那么你就可以找出为什么它仍然设置不正确,然后修复内存泄漏。

    【讨论】:

    • 我已经从 LeakCanary 网站上看到了这篇文章,虽然我不太明白
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-21
    • 1970-01-01
    • 2015-07-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多