linux上检测代码性能以及内存泄露

本文介绍了两种检测内存泄漏的方法:一是使用Coverity和valgrind等工具进行自动化检测;二是通过sar、top、free、pmap等命令手动分析,确定VIRT、VSZ或writeable/private等指标是否持续增长,以此判断是否存在内存泄漏。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方法一:

      使用工具检测:

        1.Coverity的检测报告

         2.valgrind检查


方法二:

      人工检查:

  

1,首先使用sar/top/free在系统级确定是否有内存泄露。如有,可以从top输出确定哪一个process。

2,pmap/top/ps工具是能帮助确定process是否有memory leak。确定memory leak的原则:

A)VIRT/VSZ或者writeable/private (‘pmap –d’输出)如果在做重复的操作过程中一直保持稳定增长,那么一定有内存泄露。

B) RSS只能作为参考,不能用来确定是否有内存泄露。

C) 在performance testing过程中,前面一段时间的内存增长不能用来确定内存泄露。因为最初系统需要申请一些内存来处理traffic。如果内存在短期就增长数G或者在系统稳定后还在持续增长,那就需要分析了。在我的工作中,一般前面半个小时的内存增长我都忽略。

D) 我们会发现,VSZ或者其他增长以后即使你调用了free/delete也不一定会减少或者回复到初始水平。这是系统的正常行为,释放的那一部份空间马上就能重用。

E)多次申请分配的地址空间可能不连续。在virtual address中有多个[anon]段。 Here 1M was alloated to000000001b56a000    and00002ac25a77c000.   

000000001b56a000   1156     12     12 rw---   [ anon ]

00002ac25a77c000   1040     16     16 rw---   [ anon ]


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值