JMeter使用时报错:
Uncaught Exception java.lang.OutOfMemoryError:Java heap space.See log file for details.
问题背景
近期在产品选型项目中,使用JMeter进行极限测试,获取系统极限容量,需要对并发用户翻倍增加。当并发用户数翻倍至一定数量时,并发请求过大,JMeter会出现部分线程无法启动、大量线程无法及时停止任务、JMeter卡死等现象,此时会报出如下错误:java.lang.OutOfMemoryError:Java heap space.
由于JMeter内存是通过java虚拟机JVM管理分配,当栈堆内存达到设置的最大值,此时JMeter开始闹“脾气”了,不愿意再满足测试人员的需求,罢工并提示内存溢出的错误。
解决方法
知道了JMeter问题所在,于是决定满足它──调整内存大小。
1、在JMeter的bin目录下找到Jmeter.bat
2、右键编辑Jmeter.bat,找到HEAP
rem See the unix startup file for the rationale of the following parameters, rem including some tuning recommendations set HEAP=-Xms1024m -Xmx1024m set NEW=-XX:NewSize=256m -XX:MaxNewSize=512m
3、修改堆内存大小,由原来512m改为1024m
set HEAP=-Xms1024m -Xmx1024m
注意:Set HEAP 调整堆内存的大小,Xms与Xmx一般设置为相同,若不一致,当Heap不够用,会发生内存抖动。
setNEW=-XX:NewSize=256m -XX:MaxNewSize=512m :调整内存中年轻代大小。
关于JVM的新生代参看文章:一文搞懂JVM新生代、老年代和永久代
堆内存的值并非越大越好,根据测试机物理内存而定,一般不要超过测试机物理内存的一半。
4、修改完后保存,重新启动JMeter即可。