junitreport ant task给java.lang.OutOfMemoryError:Java堆空间

时间:2010-11-15 08:53:51

标签: ant junit out-of-memory

我正在使用ant脚本运行junit测试。测试成功运行,因此ant转到junitreport任务以创建html报告。此任务失败并显示java.lang.OutOfMemoryError: Java heap space error

如何增加此任务的堆大小?或者有其他方法可以解决此错误吗?

其他一些信息:

直到我添加了40个额外的测试

,它才能正常工作

我已经查看了测试的xml输出,看起来很合理,即它没有很长的错误消息。

4 个答案:

答案 0 :(得分:3)

您可以使用ANT_OPTS环境变量来增加使用

的堆大小

答案 1 :(得分:2)

ANT bug 34342中出现此错误。普遍的共识是,它是由用于生成报告的XSLT中过多的内存消耗引起的,并且不会在ANT中修复。

对我有用的是增加传递给ant的最大堆大小,例如-Xmx3304m。正如本文提到的其他一些答案,您可以使用ANT_OPTS将最大堆大小传递给ant。

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

答案 2 :(得分:0)

您可以在maxmemory任务中使用junit设置。

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

作为the docs explain

  

要分配的最大内存量   到分叉的VM。如果fork是忽略的话   禁用。注意:如果你得到了   java.lang.OutOfMemoryError:Java堆   你的一些测试中的空间   需要提高像   maxmemory = “128米”

答案 3 :(得分:0)

如果你使用fork,“maxmemory="###m”似乎只能工作,如果你没有使用fork(就像我一样)它不会被使用,你必须使用ANT_OPTS来改变堆。