一次诡异的内存泄漏

本来很开心调试着毕设写的应用,关闭应用之后,LeakCanary提示出现MainActivity内存泄漏,心里一惊,MainActivity并没有引用很多内容啊,然后就赶紧把把堆快照出来看。

LeakCanary提示

1
2
3
4
5
6
In com.shiyan.netdisk_android:1.0:1.
* com.shiyan.netdisk_android.main.MainActivity has leaked:
* GC ROOT static android.view.inputmethod.InputMethodManager.sInstance
* references android.view.inputmethod.InputMethodManager.mNextServedView
* references android.support.v7.widget.RecyclerView.mContext
* leaks com.shiyan.netdisk_android.main.MainActivity instance

一时有点不知所措,打开堆之后,找到自己的包文件,发现果然MainActivity的RetainedSize占了整个包的一大部分

1.png

再次展开它的引用,找到了三个引用

2.PNG

果然如LeakCanary提示,来自InputManager.sInstance

感觉这个是来自Android SDK的错误啊。。。

再次检查自己的代码,有点蒙蔽毫无头绪 -_-