如何验证JMeter 5.3堆内存大小?修改配置后JSR223采样器报错
问题分析与验证方法
首先你当前的jmeter.bat配置存在语法错误,会导致堆内存配置不生效:
set NEW=-XX:NewSize-8192m -XX:MaxNewSize-8192m里的减号-应该改为等于号=,正确写法是set NEW=-XX:NewSize=8192m -XX:MaxNewSize=8192m- 配置块的结尾是
},但开头是if not defined HEAP (,应该改为)来闭合条件判断
修正配置后,你可以通过以下几种方式验证8GB堆内存是否成功分配:
方法1:修正JSR223采样器代码查看JVM参数
用以下Groovy代码替换你当前的代码,运行后查看JMeter日志(jmeter.log):
java.lang.management.ManagementFactory.getRuntimeMXBean().getInputArguments().forEach { log.info("Effective JVM argument: " + it) }
日志里会出现 -Xms8192m 和 -Xmx8192m 的记录,说明堆内存配置生效。
方法2:查看JMeter启动日志
JMeter启动时,会在jmeter.log开头打印所有JVM启动参数,直接打开日志文件搜索 Xms、Xmx,如果能找到 -Xms8192m -Xmx8192m 即说明配置生效。
方法3:使用JDK自带工具验证
- 打开命令行,执行
jps命令,找到JMeter进程的PID(进程名通常是ApacheJMeter) - 执行
jcmd <PID> VM.flags,输出结果里会显示-Xms8192m和-Xmx8192m
或者执行jstat -gc <PID>,查看S0C、S1C、EC、OC等字段的总和,接近8GB即说明堆内存分配成功。
方法4:在JMeter中直接获取堆内存信息
在JSR223采样器中执行以下代码,查看当前堆内存的初始值和最大值:
def runtime = Runtime.getRuntime() log.info("初始堆内存: " + runtime.totalMemory() / 1024 / 1024 + " MB") log.info("最大堆内存: " + runtime.maxMemory() / 1024 / 1024 + " MB")
日志中会显示最大堆内存接近8192MB,说明配置生效。
内容的提问来源于stack exchange,提问作者Vaibhav
相关产品推荐
相关产品推荐

