软件测试内存泄漏,内存泄露简单判断 - 尘埃落定 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...

本文详细阐述了内存泄露的基本概念,如何通过任务管理器监控内存使用情况,以及针对单用户和多用户场景的测试方法。重点介绍了堆内存泄漏的识别、工具如lr和性能计数器的应用,以及不同环境下的排查策略。

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

内存泄露简单判断

简单的说就是你申请了一块内存空间,使用完毕后没有释放掉。它的一般表现方式是

程序运行时间越长,占用内存越多,最终用尽全部内存,整个系统崩溃。一般我们常说的

内存泄漏是指堆内存的泄漏。堆内存是指程序从堆中分配的,大小任意的(内存块的大小

可以在程序运行期决定),使用完后必须显示释放的内存。C应用程序一般使用malloc,

realloc,new等函数从堆中分配到一块内存,使用完后,程序必须负责相应的调用free或

delete释放该内存块,否则,这块内存就不能被再次使用,我们就说这块内存泄漏了。

测试方法:

打开任务管理起察看性能记录当前内存使用量,然后启动你的被测试程序,运行使用

相应的功能,察看内存使用情况,任务管理器切换到进程页面,然后看内存使用栏目,察

看进程内存使用增量情况,使用程序一段时间然后关闭进程,察看总体内存增量。若程序

运行之前和运行之后对比没有什么变化,我们则认为不存在内存泄露,若程序运行之后比

运行之前要大的话(所有进程关闭的情况下),我们则可以认为有可能存在内存泄露情况

。当确认有内存泄露之后可以进一步进行定位,确认是在多用户情况下出现,还是在单用

户情况下出现,如果是多用户情况下出现可以利用lr进行测试,并添加一些性能计数器如

Available bytes、Private bytes、Handle count、Thread counts等进行判断,如果

Process\Private Bytes计数器和Process\Working Set计数器的值持续升高,同时

Memory\Available bytes计数器的值却持续降低的话,说明很有可能是存在内存泄漏。同

时我们注意Pages/sec、Pages Read/sec和Page Faults/sec的值,操作系统会利用磁盘较

好的方式提高系统可用内存量或者提高内存的使用效率。这三个指标直接反应了操作系统

进行磁盘交换的频度。如果Pages/sec的计数持续高于几百,可能有内存问题。但

Pages/sec值不一定就表明有内存问题,可能是运行使用内存映射文件的程序所致。Page

Faults/sec说明每秒发生页面失效次数,页面失效次数越多,说明操作系统向内存读取的

次数越多。此事需要查看Pages Read/sec的计数值,该计数器的阀值为5,如果计数值超

过5,则可以判断存在内存方面的问题。(注:在UNIX/LINUX系统中,对于指标是(page)

si和(page)so);我们还可以根据Physical Disk计数器的值分析性能瓶颈,对Physical

Disk计数器的分析包括对Page Reads/sec和%Disk Time及Aerage Disk Queue Length的分

析。如果Pages Read/sec很低,同时%Disk Time和Average Disk Queue Length的值很高

,则可能有磁盘瓶颈。但是,如果队列长度增加的同时Pages Read/sec并未降低,则是内

存不足。(注:在 UNIX/LINUX系统中,对应的指标是Reads(Writes)per sec、Percent

of time the disk is busy和Average number of transactions waiting for service)

如果单用户情况下出现可以利用单元测试工具进行定位,利用unit testing tool和语言

有关系,找到符合你应用的语言工具进行判断和定位。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值