Andoid内存泄露

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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.成员变量 写起来麻烦!

 

以上是关于Andoid内存泄露的主要内容,如果未能解决你的问题,请参考以下文章

如何用Java编写一段代码引发内存泄露

如何用Java编写一段代码引发内存泄露

每日一练5

PHP CURL内存泄露的解决方法

内存相关内容

如何查看和调试动态链接库的内存泄露