你的位置:首页 > 操作系统

[操作系统]Andoid内存泄露


1 android 内存泄露是因为分配的内存回收失败 

public static LocalHelper getInstance(Context context) {
if (instance==null){
instance = new LocalHelper(context);
}
return instance;
}

如果在contenx 传一个Activity 那么在Acitivty finish之后是无法对activity 进行回收的
因为 静态实例会对activity继续引用, 这时候 内存无法GC 会产生oom 和 内存泄露

2 Handler 引起的内存泄露

Handler 的使用造成的内存泄漏问题应该说是最为常见了

,我们知道 Handler、Message 和 MessageQueue 都是相互关联在一起的

 Handler 发送的 Message 尚未被处理,则该 Message 及发送它的 Handler 对象将被线程 MessageQueue 一直持有。

由于 Handler 属于 TLS(Thread Local Storage) 变量, 生命周期和 Activity 是不一致的。

因此这种实现方式一般很难保证跟 View 或者 Activity 的生命周期保持一致,故很容易导致无法正确释放。

 建议使用弱引用 不过会有activity.成员变量 写起来麻烦!