junitreport ant任务提供java.lang.OutOfMemoryError:java堆空间

junitreport ant任务提供java.lang.OutOfMemoryError:java堆空间,ant,junit,out-of-memory,Ant,Junit,Out Of Memory,我正在从ant脚本运行junit测试。测试成功运行,因此ant继续执行junitreport任务以创建html报告。此任务失败,出现java.lang.OutOfMemoryError:java堆空间错误 如何增加此任务的堆大小?或者是否有其他方法来解决此错误 一些补充资料: 在我添加了40个附加测试之前,它一直工作良好 我已经查看了测试的xml输出,它看起来很合理,也就是说,它没有充满长错误消息 您可以使用ANT_OPTS环境变量来增加ANT使用的堆大小您可以在junit任务本身中使用maxm

我正在从ant脚本运行junit测试。测试成功运行,因此ant继续执行junitreport任务以创建html报告。此任务失败,出现java.lang.OutOfMemoryError:java堆空间错误

如何增加此任务的堆大小?或者是否有其他方法来解决此错误

一些补充资料:

在我添加了40个附加测试之前,它一直工作良好


我已经查看了测试的xml输出,它看起来很合理,也就是说,它没有充满长错误消息

您可以使用ANT_OPTS环境变量来增加ANT使用的堆大小

您可以在junit任务本身中使用maxmemory集

<junit printsummary="yes" fork="true" haltonfailure="no" showoutput="yes" maxmemory="512m">
作为

要分配的最大内存量 到分叉的VM。如果fork是 残废注意:如果您得到 java.lang.OutOfMemoryError:java堆 在一些测试中使用空格,然后 需要像这样提高尺寸吗 最大内存=128m


maxmemory=m似乎只有在您使用fork时才起作用,如果您没有像我一样使用fork,则无法使用它,您必须使用ANT_OPTS来更改堆。

此错误已在中提出。普遍的共识是,这是由用于生成报告的XSLT内存消耗过多造成的,在ANT中不会修复

对我来说,有效的方法是增加传递给ant的最大堆大小,例如-Xmx3304m。正如这里提到的一些其他答案,您可以使用ANT_OPTS将最大堆大小传递给ANT


关于实际最大堆大小值,建议它应该是物理内存的1/4或1GB,以较小者为准。但是,您可能需要超出1GB限制才能避免此内存错误。请参阅Oracle网站上的指南。

如果可以,请尝试删除框架。它占用了很多内存。您还可以在ant.bat中增加ant的堆空间,或者实际上,参数更改只影响junit任务的内存使用,但不幸的是对junitreport没有影响@尼古拉斯的答案是更好的方法。例如,ANT_OPTS=-Xmx512m