Android ContentObserver的内存泄漏
我遇到了一个关于android应用程序内存泄漏的问题 我使用startActivity从activity1到activity2,然后按back按钮返回activity1。重复几次,adb外壳显示应用程序的RSS是上升的,不能下降。 最后,虚拟机将被关闭 然后我用MAT发现: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"
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)
使用泄漏金丝雀查找泄漏的位置