Firefly开源社区

打印 上一主题 下一主题

【原创干货】内存泄漏分析常见例子

11

积分

0

威望

0

贡献

技术小白

积分
11

【原创干货】内存泄漏分析常见例子

发表于 2014-10-25 10:41:04      浏览:13916 | 回复:1        打印      只看该作者   [复制链接] 楼主
本帖最后由 ZZP 于 2014-10-25 11:16 编辑

    下面是我在对Hello进行内存泄漏分析时发现总结的一些常见实例!希望大家平时开发时留意一下!特别是在使用内部类或者匿名内部类时特别注意一下
实例1:
  1. View view1;//某实例view
  2.              View view2’//某实例view
  3.              View view3;//某实例view
  4.              View3.getViewTreeObserver().addOnGlobalLayoutListener(newOnGlobalLayoutListene()
  5.              {            
  6.               @Override           
  7.                  public void onGlobalLayout() {                 
  8.                   //在这里会因为view1,view2被OnGlobalLayoutListener所引用(本质是AttachInfo被引用)使得宿主fragment或者activity无法gc而导致内存泄漏                     
  9.                  int width = view1.getWidth();               
  10.                  int width = view2.getWidth();           
  11.                   }
  12.                });
复制代码
结果是频繁进入个人资料页是导致内存泄漏  

实例2、把fragment注册到LinkdLet.addConnStatListener()中,在onDestrory中没有调用LinkdLet. removeConnStatListener()导致退出进入再推出再进入频繁操作而导致内存泄漏;

实例3、GiftLetl. regNewMsgHandler后,在退出fragment后虽然手动设为null,但是因为原来那个已经设置另一进程而导致内存泄漏实例4、内部类中使用宿主类变量(截图中是ListView的Adapter),而该变量又引用这MainActivity导致内存泄漏;如引用链                                                       


123.jpg (83.21 KB, 下载次数: 234)

123.jpg
回复

使用道具 举报

279

积分

10

威望

9

贡献

社区版主

Rank: 7Rank: 7Rank: 7

积分
279
QQ
发表于 2014-10-25 11:17:52        只看该作者  沙发
nemo211楼主好,你的内容是不是没写完,请补充完整。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表