码迷,mamicode.com
首页 > 其他好文 > 详细

非静态内部类创建静态实例造成的内存泄漏

时间:2017-03-18 23:32:16      阅读:550      评论:0      收藏:0      [点我收藏+]

标签:内存   context   封装   技术分享   代码   思考   app   使用   回收   

技术分享

请大家思考,为什么会内存泄漏?

 1. 首先,非静态内部类默认会持有外部类的引用。

 2. 然后又使用了该非静态内部类创建了一个静态的实例。

 3. 该静态实例的生命周期和应用的一样长,这就导致了该静态实例一直会持有该Activity的引用,导致Activity的内存资源不能正常回收。

正确的做法有两种,一种是将内部类testResource改成静态内部类,还有就是将testResource抽取出来,封装成一个单例,如上一个例子那样,但是需要context时单例要切记注意Context的泄漏,使用applicationContext。

在这里,我们直接将testResource改成静态内部类。代码示意如下

技术分享

 

非静态内部类创建静态实例造成的内存泄漏

标签:内存   context   封装   技术分享   代码   思考   app   使用   回收   

原文地址:http://www.cnblogs.com/ganchuanpu/p/6576252.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!