Android性能优化(native内存泄漏分析方法)

针对native的内存泄漏,我们经常谈到的有2中方法valgrind和malloc_debug,由于Arm不支持asan的memory leak特性,所以android使用asan是无法检测处内存泄漏的。

我们这里介绍一种利用malloc_debug来调试native进场内存泄漏的方法。首先介绍一下malloc_debug的使用方法:

adb shell setprop libc.debug.malloc.options "backtrace leak_track verbose"
adb shell setprop libc.debug.malloc.program xxxx(可以是你自己的进程)
adb shell export LIBC_DEBUG_MALLOC_OPTIONS=backtrace
adb shell export LIBC_DEBUG_MALLOC_ENABLE=1

启动bin

1.如何判断malloc_debug已经使能

adb shell ps -ef |grep xxx 查找启动进程的pid

然后查找该进程的smap

showmap $(pidof eatmemory) |grep malloc

如果出现下面的malloc_debug库的加载,那可以确认malloc_debug已经成功

2.如何找到内存泄漏点

malloc_debug有一个缺点,它只有在进程退出时,才回检测没有释放的内存,然后把每内存的申请调用栈打印,所以如果是类似常驻服务的进程,malloc_debug基本没用(第三步我们会介绍一种修改malloc_debug的方法,支持常驻服务的内存泄漏检测)。我们先看一下针对进程正常退出,我们怎么去查看。进程结束以后,会有类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值