news 2026/2/3 21:30:37

高校软件课题验收测试【软件性能测试存在内存泄漏的迹象:如何利用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/2/3 2:23:38

模型上下文协议 (MCP):AI 与外部世界的标准化连接框架

模型上下文协议 (Model Context Protocol,简称 MCP) 是由 「Anthropic 公司(Claude AI 的创造者)于 2023 年底推出的一项开放协议」。其核心目标是「为 AI 模型与外部数据源、工具和服务之间的连接建立统一、安全、高效的标准」,解…

作者头像 李华
网站建设 2026/2/3 4:42:02

基于深度学习YOLOv10的手语识别检测系统(YOLOv10+YOLO数据集+UI界面+Python项目源码+模型)

一、项目介绍 摘要 本项目基于YOLOv10目标检测算法开发了一套高效的手语字母识别系统,专门用于识别美国手语字母表中的26个字母(A-Z)。系统通过深度学习技术实现了对手势的实时检测与分类,为手语识别和人机交互领域提供了创新的解决方案。项目使用自定…

作者头像 李华
网站建设 2026/2/3 2:22:44

站在Google的肩膀上学习Beam编程模型

你好,我是程序员贵哥。 今天我要与你分享的话题是“站在Google的肩膀上学习Beam编程模型”。 在上一讲中,我带你一起领略了Apache Beam的完整诞生历史。通过上一讲,你应该对于Apache Beam在大规模数据处理中能够带来的便利有了一定的了解。 而…

作者头像 李华
网站建设 2026/2/3 9:21:36

(6-2)手部、足部与末端执行器设计:足部结构

6.2 足部结构抓取能力是人形机器人手部功能的核心体现,而不同任务对抓取方式的要求存在显著差异。仿生手设计中,通常将抓取类型划分为精细抓取(Precision Grip)与包裹抓取(Power Grip)两大类。二者在受力模…

作者头像 李华
网站建设 2026/2/2 15:03:10

什么是google算法?搞懂底层逻辑才不会被收割

做外贸或者是搞独立站的朋友,大概都有过这种经历:前一天网站流量还在蹭蹭涨,第二天早上起来一开后台,心都凉了半截。数据断崖式下跌,询盘直接归零。这时候你跑去问SEO专家,对方通常会一脸深沉地告诉你&…

作者头像 李华