news 2026/4/16 13:33:33

高校软件课题验收测试【软件性能测试存在内存泄漏的迹象:如何利用LoadRunner来监控内存泄漏】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
高校软件课题验收测试【软件性能测试存在内存泄漏的迹象:如何利用LoadRunner来监控内存泄漏】

LoadRunner主要通过性能计数器来监控系统资源。

步骤1添加监控计数器

在Controller的运行视图中,添加需要监控的性能计数器。

操作系统级内存计数器(Windows示例)

计数器对象Memory,计数器Available Mbytes:可用物理内存。这是最直观的标准,不断下降是泄漏的强烈信号。

计数器对象Memory,计数器Pages/sec:每秒页错误数。不断过高可能表示内存压力大,导致频繁磁盘交换。

计数器对象Process,计数器Private Bytes:所选进程分配的独占内存量。监控被测应用进程的此值是不是不断增长是重点。

计数器对象Process,计数器Working Set:进程工作集大小,即物理内存占用。

文章来源:卓码软件测评

精彩推荐:点击蓝字即可
软件负载测试API自动化测试软件测试第三方软件测试软件性能测试软件测试机构

应用服务器级计数器(以Java为例)

需保证JVM已启用 JMX 监控。

java.lang:type=Memory:

HeapMemoryUsage.used:堆内存已使用量。

NonHeapMemoryUsage.used:非堆内存使用量。

*java.lang:type=GarbageCollector,name= **:

CollectionCount:垃圾回收次数。

CollectionTime:垃圾回收累计时间。

数据库级计数器

监控数据库连接池的使用情况,连接不释放也会导致内存泄漏。

步骤2配置监控和执行测试

在设计视图中,保证场景负载模型是不断性或循环递增的,便观察内存随时间的变化。

设置足够的测试运行时间。内存泄漏一般需要较长时间(如30分钟以上)才能明显暴露。

执行情形,并实时观察添加的计数器图表。

步骤3在Analysis中深入分析数据

测试完成后,使用 Analysis 组件进行深度分析。

整合图表:

将可用内存(Available Mbytes)、被测进程的私有字节(Process(YourApp)\Private Bytes) 和运行用户数(Running Vusers)、事务响应时间(Transaction Response Time)叠加在同一个图形中。

进行关联分析:

正常方式:负载(用户数)上升时,内存占用上升;负载下降时,内存占用应显著回落。

泄漏方式:负载回落后,内存占用不回落或仅回落一小部分,且下一次负载峰值时,内存起点比上一次更高,形成台阶式上升。

聚焦GC活动:

分析 GarbageCollection 相关的计数器。如果发现CollectionCount(特别是Full GC)在测试后期异常频繁,且CollectionTime大幅增加,同时HeapMemoryUsage.used基线不断上移,这几乎可以确定是堆内存泄漏。

诊断排查建议

隔离和定位:

一旦通过LoadRunner宏观定位到内存泄漏,一般需要借助更专业的剖析工具(Profiler) 进行代码级诊断,如:Java VisualVM、JProfiler、.NET Memory Profiler 或 Valgrind(C/C++)。

在Profiler中,重点查找支配树或保留堆分析,找出哪些对象实例数量异常多且无法被回收。

LoadRunner脚本排查:

检查Vuser脚本中是不是存在连接(数据库、网络、文件)未正确关闭的情况。

检查参数化或动态数据使用是不是正确,防止数据无限累积。

流程

基线测试:先运行一个短时间的标准测试,记录正常情况下的内存使用方式。

耐力测试:设计一个长时间(如8-24小时)的稳定负载情形,这是发现内存泄漏的最好测试类型。

监控配置:系统性地添加操作系统、中间件、数据库三层的重点内存计数器。

方式比对:在Analysis中,重点比对内存消耗曲线和负载曲线的走势关系。内存曲线和负载曲线背离(负载稳定,内存不断增长)是判断根据。

结合日志:将LoadRunner结果和应用服务器的GC日志、错误日志时间点进行关联分析,能获得更确切的证据。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/14 18:43:20

MindSpore 高性能调优:图算融合 + 自定义算子的推理

在 Ascend/GPU 硬件上部署工业级视觉模型时,默认算子的串行开销、硬件适配不足往往会成为性能瓶颈。本次分享通过图算融合的精细化规则配置基于 TBE 的自定义高性能算子,将 ResNet50 的推理吞吐量提升 80%,同时把单样本延迟压缩至原有的 45%&…

作者头像 李华
网站建设 2026/4/11 3:52:13

分享经济视角下社会化众包与众筹的创新路径——链动2+1模式AI智能名片小程序的融合应用

摘要:在数字经济快速迭代的背景下,分享经济思维推动社会化众包与众筹模式成为企业资源整合、资金筹集及运营效率提升的核心抓手。社会化众包通过汇聚分散社会力量完成专业化任务,众筹则依托大众参与实现资金与资源的快速聚合,两者…

作者头像 李华
网站建设 2026/4/16 1:08:59

五年博士1年读完,20分钟干完48小时教授工作!这个工具在硅谷火了

芝加哥教授20分钟干完48小时工作,零基础小白10分钟造出完整App,前xAI工程师睡一觉醒来项目就做好了……Claude Code正在重新定义「编程」这件事。 一个顶级程序员,30天没写一行代码。 但他负责的项目,6个月做到了10亿美元年化营…

作者头像 李华
网站建设 2026/4/16 12:31:25

VSCode中,通过SFTP插件管理远程服务器文件

在VSCode中,通过SFTP插件管理远程服务器文件可以极大提升开发效率。目前有几款主流插件,它们的功能侧重和操作方式有所不同,你可以根据自己的习惯和项目需求来选择。 下面的表格对比了四款主流的SFTP相关插件:插件名称 (作者/发布…

作者头像 李华
网站建设 2026/4/16 10:51:43

Java基于Spring Boot+Vue的社区养老服务系统的设计与实现

所需该项目可以在最下面查看联系方式,为防止迷路可以收藏文章,以防后期找不到 这里写目录标题 项目介绍系统实现截图技术栈介绍Spring Boot与Vue结合使用的优势Spring Boot的优点Vue的优点 Spring Boot 框架结构解析Vue介绍系统执行流程Java语言介绍系统…

作者头像 李华