内存泄漏如何定位

一般系统的内存泄漏是因为melloc和calloc占用内存,没有释放造成的

如何监控内存泄漏

watch -n .5 'ps -o pid,comm,rss,vsz -p 1147625'

(说明上面的-p后面表示进程的pid,一般这个内存没有持续增长说明内存没有泄漏)

如何定位内存泄漏?

(1)走读代码,看是哪些上下文没有开辟内存但是没有释放;(可能跨线程调用,还有就前面流程调用开辟,后面流程释放内存,比较难定位)

(2)加入代码调试每个函数占用内存的大小;

#include <sys/resource.h>

static int32_t read_memory(void){
    struct rusage usage;
   if (getrusage(RUSAGE_SELF, &usage) == 0) {
        LOG("Memory usage: %ld kilobytes\n", usage.ru_maxrss);
    } else {
        LOG("getrusage ERROR");
    }

    return usage.ru_maxrss;
}

(3)如何避免内存泄漏

        跑vargrind+单元测试避免内存泄漏

        跑asan

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值