|
【原创干货】内存泄漏分析常见例子
发表于 2014-10-25 10:41:04
浏览:18616
|
回复:1
打印
只看该作者
[复制链接]
楼主
本帖最后由 ZZP 于 2014-10-25 11:16 编辑
下面是我在对Hello进行内存泄漏分析时发现总结的一些常见实例!希望大家平时开发时留意一下!特别是在使用内部类或者匿名内部类时特别注意一下
实例1:- View view1;//某实例view
- View view2’//某实例view
- View view3;//某实例view
- View3.getViewTreeObserver().addOnGlobalLayoutListener(newOnGlobalLayoutListene()
- {
- @Override
- public void onGlobalLayout() {
- //在这里会因为view1,view2被OnGlobalLayoutListener所引用(本质是AttachInfo被引用)使得宿主fragment或者activity无法gc而导致内存泄漏
- int width = view1.getWidth();
- int width = view2.getWidth();
- }
- });
复制代码 结果是频繁进入个人资料页是导致内存泄漏
实例2、把fragment注册到LinkdLet.addConnStatListener()中,在onDestrory中没有调用LinkdLet. removeConnStatListener()导致退出进入再推出再进入频繁操作而导致内存泄漏;
实例3、GiftLetl. regNewMsgHandler后,在退出fragment后虽然手动设为null,但是因为原来那个已经设置另一进程而导致内存泄漏实例4、内部类中使用宿主类变量(截图中是ListView的Adapter),而该变量又引用这MainActivity导致内存泄漏;如引用链
|
|