看得懂的,耐心去看;看不懂的,硬着头皮去看.

内存泄露简单判断

上一篇 / 下一篇  2008-08-20 17:21:41 / 个人分类:LoadRunner相关知识

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

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

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

可以在程序运行期决定),使用完后必须显示释放的内存。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和语言

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


TAG: LoadRunner相关知识

 

评分:0

我来说两句

日历

« 2024-05-01  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 23824
  • 日志数: 30
  • 文件数: 1
  • 建立时间: 2008-03-04
  • 更新时间: 2009-01-17

RSS订阅

Open Toolbar