参考资料

产生内存泄露的场景

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 条评论

发表回复

您的电子邮箱地址不会被公开。