Android ContentObserver的内存泄漏

Android ContentObserver的内存泄漏,android,memory-leaks,mat,Android,Memory Leaks,Mat,我遇到了一个关于android应用程序内存泄漏的问题 我使用startActivity从activity1到activity2,然后按back按钮返回activity1。重复几次,adb外壳显示应用程序的RSS是上升的,不能下降。 最后,虚拟机将被关闭 然后我用MAT发现: Leak Suspects» Leaks» Problem Suspect 1 Description 59 instances of "android.database.ContentObserver$Transport"

我遇到了一个关于android应用程序内存泄漏的问题

我使用startActivity从activity1到activity2,然后按back按钮返回activity1。重复几次,adb外壳显示应用程序的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% 
泄漏嫌疑犯»泄漏»问题嫌疑犯1描述
由“”加载的59个“android.database.ContentObserver$Transport”实例占用1569864(39.41%)字节。
关键词
android.database.ContentObserver$Transport
参考模式
类名浅堆保留堆百分比
类android.database.ContentObserver$Transport@0x40308cc0.00%

但是我从来没有使用过那个类。我怎样才能找到真正的原因呢?

你在使用游标适配器吗?如果没有正确初始化,它可能会在ContentObserver上创建它的文件,这将产生泄漏

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

new CursorAdapter(context, cursor, 0) 

使用泄漏金丝雀查找泄漏的位置