首页 > 代码库 > Android内存泄露总结

Android内存泄露总结

Android可能发生内存泄露的地方总结:

1.查询数据库没有关闭游标

2.构建adapter时,没有使用缓存的convertView

3.Bitmap对象不使用的时候调用recycle()方法释放内存

4.释放对象的引用

5.单例模式引用context,如果使用actvitiy-context,会造成内存泄露,

可以使用getApplicationContext()); 或getApplication()代替。 

 

参考文档:

A?n?d?r?o?i?d? ?内?存?泄?漏?调?试

http://wenku.baidu.com/view/3dbfb0a1b0717fd5360cdc47.html

 

分析内存泄露的办法:

1.使用MAT分析内存泄露

2.使用procrank记录内存走势

使用procrank来跟踪某进程的使用哪个情况我们常常借助与脚本。这样就可以查看某一段时间的内存变化。
如创建一个文件:trackmem.sh chmod 775 trackmem.sh
内容如下:
#!/bin/bash

while true; do
adb shell procrank | grep "com.example.studymemroyleak"
sleep 1
done
运行该脚本:
./trackmem.sh

 这个脚本的用途是每1秒钟让系统输出一次指定进程的内存使用状况,主要观察Uss的数据,可以直接把数据输出到xls表格

 ./trackmem.sh > data.xls

然后生成折线图(选择只绘制线条),注意去掉数字的单位(K)。生成图表时,先选择数据,然后再点插入图表即可。