JMeter OutOfMemoryError
我面临下面的内存错误,JMeter停止工作JMeter OutOfMemoryError,memory,heap,jmeter,out-of-memory,heap-memory,Memory,Heap,Jmeter,Out Of Memory,Heap Memory,我面临下面的内存错误,JMeter停止工作 java.lang.OutOfMemoryError: Java heap space Dumping heap to java_pid4412.hprof ... Heap dump file created [591747609 bytes in 71.244 secs] Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap spac
java.lang.OutOfMemoryError: Java heap space Dumping heap to
java_pid4412.hprof ... Heap dump file created [591747609 bytes in
71.244 secs] Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space Exception in thread
"AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError:
Java heap space Exception in thread "AWT-EventQueue-0"
java.lang.OutOfMemoryError: Java heap space
如何解决这个问题?我的系统有很好的规格,比如16GB RAM,2个四核处理器,146GB硬盘
有人能帮我吗?您为JVM分配了多少内存?大约512MB的地方 配置是
java -Xms<initial heap size> -Xmx<maximum heap size>
java-Xms-Xmx
在测试多个用户时,应检查是否未使用树结果侦听器
检查jmeter最佳实践以避免此类问题
关于我也有这个问题,不管我如何调整配置
java-Xms-Xmx
,因为我总是内存不足。最后,我发现在GUI模式下运行JMeter(尤其是使用侦听器)会导致瓶颈。使用JMeter的最佳方式,尤其是在扩展测试或运行多个从属服务器时,是在非GUI模式下,它看起来像这样:
jmeter -n -t testplan.jmx -r
查看此链接并阅读如何以正确的方式进行远程测试:。阅读“正确方式”远程测试部分
希望这有帮助。堆转储显示您正在使用默认的JMeter设置512 Mo。 因此,即使您有16gb,您也不会使用它们 将jmeter.bat中的默认JVM(可选)替换为正确的大小:
set HEAP=-server -Xms768m -Xmx768m -Xss128k
set NEW=-XX:NewSize=1024m -XX:MaxNewSize=1024m
另请看:
1. Open jmeter file using vi editor /text editor
2. Search for "HEAP"
3. Change minimum (-Xms) and Maximum (-Xmx) heap values as you required
4. Save and quit (!wq enter)
5. Start Jmeter by sh jmeter.sh or bash jmeter.bat or java -jar ApacheJMeter.jar
按照其他答案中提到的调整堆大小,并考虑一些最佳实践
- 运行测试时(当然不是验证时),请使用非gui模式
- 禁用任何重侦听器,如查看结果树,但改用简单的数据编写器,然后分析数据
这两项将大大提高您的性能和堆大小使用率要优化OutOfMemoryError应遵循以下步骤:
- 增加Java堆大小:
JMeter.bat/sh
)
这意味着默认分配的堆大小最小为512MB,最大为512MB。根据您自己的机器配置对其进行配置。还应该记住,操作系统也需要一些内存,所以不应该分配所有的物理RAM
- 在非GUI模式下运行测试:
- 在测试运行期间禁用所有侦听器。它们仅用于调试,并用于设计所需的脚本
- 使用最新软件:
- 决定需要存储哪些指标:
- 调整JVM:
NEW=-XX:NewSize=128m-XX:MaxNewSize=512m
这意味着内存将以这种速度增加
2.-server
-这会通过运行时参数优化将JVM切换到“服务器”模式。在这种模式下,JMeter启动更慢,但总体吞吐量将更高
3.-d64
-在使用64位操作系统时,使用此参数可以显式地告诉JVM以64位模式运行
4.-XX:+UseConMarkSweepGC
-这强制使用CMS垃圾收集器。它将降低总体吞吐量,但会导致CPU密集型垃圾收集时间大大缩短
5.-XX:+DisableExplicitGC
-这可以防止应用程序强制执行昂贵的垃圾收集,并有助于避免意外暂停
为了更好更详细地理解,这个关于的博客很有帮助。您必须更改jmeter.bat文件中的堆大小。首先,您必须将2GB或6GB(或您想要输入的大小)的大小转换为mb,然后保存它并重新启动.bat文件
在Jmeter版本3.x中,为“Set HEAP=-Xms512m-Xmx512m”设置值$Jmeter_HOME/bin/jemter.sh(Jmeter.bat)中提到: ##环境变量:
##JVM_ARGS-可选的java ARGS,例如-Dprop=val
##例如
##JVM_ARGS=“-Xms512m-Xmx512m”jmeter.sh等 因此,在您的情况下,您可以将其设置为尽可能满足您的需要,例如:
JVM_ARGS="-Xms1024m -Xmx1024m"
在非GUI模式下运行Jmeter。增加内存的堆大小。添加非常少/没有侦听器。 要在非GUI模式下运行Jmeter,请转到bin目录并在该窗口中打开命令提示符。使用以下命令“jmeter.bat-n-t Test.jmx-l Test.csv”,这里Test.jmx是我需要在非GUI模式下打开的测试文件,Test.csv是我需要存储结果的文件。 要增加内存大小,请使用命令HEAP=“-Xms512m-Xmx2048m”,这里512是已分配的内存,2048是我需要分配给Jmeter的内存 希望这有帮助
JVM_ARGS="-Xms1024m -Xmx1024m"
# Set var to increase available memory
JVM_ARGS="-Xms2048m -Xmx4096m"
# Run jmeter via sh script, e.g.:
/jmeter/5.1.1/libexec/bin/jmeter.sh -n -t testfile.jmx -l results.jtl -j log.txt
INFO o.a.j.JMeter: Max memory =3817865216