android复习路之内存泄漏篇

android内存泄漏总结:

1.集合框架

集合框架中只添加元素而没有删除机制,会一直使用内存,如果框架类是全局的只会使集合所用的内存一直增加。

使用集合类一定要记得有相应的删除机制。

2.单例造成泄漏

由於单例的静态型会使其生命周期和app 的一样,如果不恰当的使用会造成内存泄漏。对于activity的引用可以考虑使用弱引用或者是软引用。

3.匿名内部类/非静态内部类

如果在匿名内部类中使用了静态的实例,则该实例的生命周期和app的生命周期是一样的,该实例又会持有activity的引用,导致activity的内存无法正常的回收。如果匿名内部类被异步线程所持有就要小心线程和activity的生命周期不一样,就造成了activity的泄漏。

4.handler内存泄漏

我们为了避免产生ANR会使用handler如果handler中的任务没有完成则handler对象和message会被message queue所持有。而且handler的生命周期和activity生命周期不一致所以很容易造成无法正常释放。避免handler内存泄漏将handler声明为静态的,然后通过软引用的方式引入activity。

5.尽量避免使用static成员变量

static成员变量的生命周期和app的生命周期是一样的。如果app是常驻会一直占用内存。

6.资源未关闭造成的内存泄漏

对于使用量broadcastreceiver  contentobsever file 游标cursor,stream,bitmap,应该在activity销毁的时候进行注销,否则会造成内存泄漏。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章