并行运行测试会使Java堆内存不足。但是,当我运行它们不平行时,没有内存问题。这是错误 - [java.lang.OutOfMemoryError:Java堆空间 at java.util.Arrays.copyOf(Arrays.java:3332) at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:124) 在java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:448) 在java.lang.StringBuilder.append(StringBuilder.java:136)
答案 0 :(得分:1)
每当创建一个对象时,对象都会从Heap中分配内存,当不再需要该对象时,内存会回到堆空间。如果并行运行测试,则会有不同的线程同时向堆中添加对象,并且堆空间不足。当你运行单线程时,一旦测试完成,它的对象就会从堆中删除,因此在下一个测试中,堆中有空间用于对象。
要修复它,请尝试增加用于运行测试的堆空间。
答案 1 :(得分:1)
是的,尝试增加堆空间:API documentation
您还可以减少并行线程的数量。听起来你试图使用太多。
中修复答案 2 :(得分:1)
我不得不关闭我的日志(空手道 0.9.6):
karate.configure('report', { showLog: false});
这已经在空手道 1.0.0 中修复
答案 3 :(得分:-1)
发生这种情况是因为您正在进行并行执行,而空手道会提供大量日志, 进行以下更改并使并行线程 1,2 或最大 3。
<root level="info">
<!--<appender-ref ref="STDOUT" />-->
<appender-ref ref="FILE" />
</root>