Firefly开源社区
标题:
【原创干货】内存泄漏分析常见例子
[打印本页]
作者:
nemo211
时间:
2014-10-25 10:41
标题:
【原创干货】内存泄漏分析常见例子
本帖最后由 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导致内存泄漏;如引用链
123.jpg
(83.21 KB, 下载次数: 237)
下载附件
2014-10-25 10:43 上传
作者:
ZZP
时间:
2014-10-25 11:17
nemo211楼主好,你的内容是不是没写完,请补充完整。
欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/)
Powered by Discuz! X3.1