现在的位置: 首页 > 综合 > 正文

Android 内存泄漏排查

2017年11月07日 ⁄ 综合 ⁄ 共 616字 ⁄ 字号 评论关闭

Android 内存管理目前按照我的工作来分,主要分为应用内存泄漏和native服务内存泄漏

应用内存泄漏:

      方法1:开发单一应用最简单的方式,view hiarecher检测是否存在view的泄漏, ddms检测data object的量

      方法2:procrank  观测 uss的使用情况

      如下脚本,从网络获取:

#!/system/bin/sh
while true
do
date >> /mnt/sdcard/procrank.log
procrank >> /mnt/sdcard/procrank.log
echo >> /mnt/sdcard/procrank.log
sleep 5
done

将相关脚本放置于/system/bin,直接运行,然后操作,然后就可以看到内存情况,此方法适用于任何进程


应用的内存泄露,主要要注意以下的点

registerContentOberver 和 反注册,类似此类,这类内存泄露最不易查找,造成相互引用之类的

查询数据库的cursor关闭

bitmap


服务内存泄漏:

服务泄漏的判定主要用上述方法2来跟踪

另外

http://freepine.blogspot.com/2010/02/analyze-memory-leak-of-android-native.html

也是个好方法,可以直接搞到调用栈,另外不光适用于mediaserver,实际也可以移植依附到其他进程使用,本人已亲测过。MTK实际已将此方式集成于自己的系统中。

抱歉!评论已关闭.