什么是内存泄漏?
引用导致的对象未被释放
引起内存泄漏的因素:
- 单例
- 非静态内部类
- 持有外部类的隐式引用,而在外部类回收之前,没有非静态内部类没有得到释放。
- 非静态内部类创建了静态实例,导致该实例的生命周期达到ClassLoader级别,又因为该实例持有外部的隐式引用,所以导致其外部类无法正常释放。
- 问题1:为什么非静态内部类对外部类会存在一个隐式引用?
- 答案1:因为它底层的机制就是这样的。
- BroacastReceiver没有unRegister
- inputStream没有close
- handler AsyncTask,