参考资料
产生内存泄露的场景
https://www.cnblogs.com/y1011/p/11833447.html
- 单例导致的内存泄露
对于传入的参数,在单例内部可以定义成WeakRefrence,但是要注意外部对参数必须存在一个强引用,否则这个参数可能被回收。 - 静态变量导致的内存泄露
-
非静态内部类导致的内存泄露
-
未取消注册或回调造成的内存泄露
我用的Android10测试,没有解注册广播并不会导致Activity内存泄漏。
- Timer和TimerTask造成的内存泄露
-
集合保存的对象未及时清除导致的内存泄露
-
资源未及时关闭导致的内存泄露
-
IO:经测试发现没有调用stream的close方法,不一定就会导致内存泄漏,但是如果反复的开启关闭activity及有可能导致activity内存泄漏。
-
Cursor: 经测试发现没有调用cursor的close方法,不一定就会导致内存泄漏 https://blog.csdn.net/f2006116/article/details/77825385
别人的SDK产生内存泄漏怎么办?
如果传入SDK的参数是匿名内部类,必然会导致当前类内存泄露,只要把这个匿名内部类定义成静态内部类即可。
Google Android源码有内存泄漏
- LeakCanary在Android 10设备上的提示Activity(IRequestFinishCallback$Stub)内存泄露问题
https://blog.csdn.net/oLengYueZa/article/details/109207492
0 条评论