【问题标题】:memory leak about ContentObserver关于 ContentObserver 的内存泄漏
【发布时间】:2013-01-24 04:28:13
【问题描述】:

我在我的 android 应用程序上遇到了内存泄漏问题。

我使用startActivity从activity1到activity2,然后按返回按钮返回activity1。重复服务时间,adb shell显示应用程序的RSS正在上升,不能下降。 最后虚拟机将被关闭。

然后我用MAT发现:

Leak Suspects» Leaks» Problem Suspect 1 Description
59 instances of "android.database.ContentObserver$Transport", loaded by "<system class loader>" occupy 1,569,864 (39.41%) bytes. 

Keywords
android.database.ContentObserver$Transport

 Reference Pattern
Class Name Shallow Heap Retained Heap Percentage 
class android.database.ContentObserver$Transport @ 0x40308cc0 0 0 0.00% 

但我从不使用那个类。我怎样才能找出真正的原因?

【问题讨论】:

  • 使用 LeakCanary 查找泄漏点

标签: android memory-leaks mat


【解决方案1】:

您是否正在使用任何 CursorAdapter?如果它没有正确初始化,它可能会在 ContentObserver 上创建它,这会产生你的泄漏。

您应该将此构造函数用于 CursorAdapter。标志 0 将阻止它创建自己的 ContentObserver。

new CursorAdapter(context, cursor, 0) 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-06
    • 2015-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多