Malloc Debug分析native内存占用

3,357 阅读1分钟

注意:Malloc Debug只支持6.0及以下版本

一.DDMS配置

1.1 下载低版本的tools

高版本DDMS整合进monitor里了,貌似没有Native Heap选项
Linux:dl-ssl.google.com/android/rep…
Windows:dl-ssl.google.com/android/rep…
Mac:dl-ssl.google.com/android/rep…
下载以后替换android-sdk的tool目录

2.ddms配置

打开~\.android\ddms.cfg文件(如果文件不存在,先打开一次ddms就会生成),添加native=true。打开ddms就能看到右边有Native Heap选项了

2.修改libc.debug.malloc属性

这个操作需要root权限,libc.debug.malloc存在default.prop文件里,每次开机的时候default.prop文件都会从boot.img里解压出来。所以直接修改default.prop文件没用,重启之后值还是会还原,要彻底修改只能重刷boot.img,某些手机有变砖风险,不建议使用。这里介绍另外一种方法,软重启:

# 模拟器
adb root
adb shell
setprop libc.debug.malloc 1
stop;start
# 真机
adb shell
su
setprop libc.debug.malloc 1
stop;start

运行上面三行代码就可以了。start命令会让zygote进程和所有系统服务重启,执行init.rc脚本。ps:某些真机上setprop可能不成功,推荐用magisk

adb shell
su
magisk resetprop libc.debug.malloc 1
stop;start

3.查看native内存占用

打开ddms->点击左侧要分析的进程->Native Heap->Snapshot Current Native Heap Usage
效果如下:

malloc_debug官方文档