jam*_*mes 17 memory heap heap-memory jmeter out-of-memory
我面临OutOfMemor错误,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 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
Run Code Online (Sandbox Code Playgroud)
怎么解决?
我的系统具有非常好的规格,如16GB RAM,2x四核处理器,146 GB硬盘.
谁能帮我?
Ale*_*aho 16
你为JVM分配了多少内存?在某处可以容纳512 MB?
配置是
java -Xms<initial heap size> -Xmx<maximum heap size>
Run Code Online (Sandbox Code Playgroud)
小智 16
您的堆转储显示您使用的默认JMeter设置为512 Mo.所以即使您有16 GB,也没有使用它们.
将jmeter.bat中的默认JVM可选替换为正确的大小:
set HEAP=-server -Xms768m -Xmx768m -Xss128k
set NEW=-XX:NewSize=1024m -XX:MaxNewSize=1024m
Run Code Online (Sandbox Code Playgroud)
另请看:
Adn*_*nan 10
要优化OutOfMemoryError
这些步骤,应遵循以下步骤:
JMeter是一个与JVM一起运行的Java工具.为了获得最大的能力,我们需要在执行期间为JMeter提供最大的资源.首先,我们需要增加堆大小(在JMeter bin目录中,我们得到jmeter.bat/sh
).
HEAP=-Xms512m –Xmx512m
Run Code Online (Sandbox Code Playgroud)
这意味着默认分配的堆大小最小为512MB,最大为512MB.根据您自己的机器配置进行配置.还应记住操作系统还需要一些内存,因此不应分配所有物理RAM.
JMeter是Java GUI应用程序.它还具有非GUI资源(CPU/RAM).如果我们在非GUI模式下运行Jmeter,它将消耗更少的资源,我们可以运行更多的线程.
在负载测试期间应禁用监听器.启用它们会导致额外的开销,这会占用测试中更重要元素所需的宝贵资源.
Java和JMeter应该保持更新.
在存储请求和响应头时,断言结果和响应数据会占用大量内存!因此,除非绝对必要,否则最好不要将这些值存储在JMeter上.
还可以添加或修改JMeter启动脚本中的以下JVM参数:
1.添加内存分配率:
NEW=-XX:NewSize=128m -XX:MaxNewSize=512m
这意味着内存将以此速率增加.
2.-server
- 通过运行时参数优化,将JVM切换到"服务器"模式.在此模式下,JMeter启动速度较慢,但整体吞吐量会更高.
3. -d64
- 使用64位操作系统时,使用此参数可以明确告诉JVM以64位模式运行.
4. -XX:+UseConcMarkSweepGC
- 这会强制使用CMS垃圾收集器.它将降低整体吞吐量,但会导致更短的CPU密集型垃圾收集.
5. -XX:+DisableExplicitGC
- 这可以防止应用程序强制进行昂贵的垃圾收集,并有助于避免意外暂停.
为了更好和更详细的理解,这个博客关于JMeter负载测试"Out of Memory"失败的9个简易解决方案是有帮助的.
小智 5
我也有这个问题,我调整配置并不重要java -Xms<initial heap size> -Xmx<maximum heap size>
,因为我总是耗尽内存.最后我发现在GUI模式下运行JMeter(特别是对于监听器)会导致瓶颈.使用JMeter的最佳方法,特别是对于扩展测试或运行多个从属服务器,处于非GUI模式,如下所示:
jmeter -n -t testplan.jmx -r
Run Code Online (Sandbox Code Playgroud)
查看此链接并阅读如何以正确的方式进行远程测试:http://wiki.apache.org/jmeter/JMeterFAQ#How_to_do_remote_testing_the_.27proper_way.27.3F.阅读有关远程测试"正确方法"的部分.
希望这可以帮助.
很多这些答案已经过时了。目前使用 jmeter v5.1.1 r1855137:
# 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
Run Code Online (Sandbox Code Playgroud)
您可以通过 log.txt 文件验证内存增加是否可用,该文件将使用上述值显示以下内容:
INFO o.a.j.JMeter: Max memory =3817865216
Run Code Online (Sandbox Code Playgroud)