首页 > 代码库 > 非静态内部类创建静态实例造成的内存泄漏
非静态内部类创建静态实例造成的内存泄漏
请大家思考,为什么会内存泄漏?
1. 首先,非静态内部类默认会持有外部类的引用。
2. 然后又使用了该非静态内部类创建了一个静态的实例。
3. 该静态实例的生命周期和应用的一样长,这就导致了该静态实例一直会持有该Activity的引用,导致Activity的内存资源不能正常回收。
正确的做法有两种,一种是将内部类testResource改成静态内部类,还有就是将testResource抽取出来,封装成一个单例,如上一个例子那样,但是需要context时单例要切记注意Context的泄漏,使用applicationContext。
在这里,我们直接将testResource改成静态内部类。代码示意如下
非静态内部类创建静态实例造成的内存泄漏
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。