我正在使用ant脚本运行junit测试。测试成功运行,因此ant转到junitreport任务以创建html报告。此任务失败并显示java.lang.OutOfMemoryError: Java heap space error
。
如何增加此任务的堆大小?或者有其他方法可以解决此错误吗?
其他一些信息:
直到我添加了40个额外的测试
,它才能正常工作我已经查看了测试的xml输出,看起来很合理,即它没有很长的错误消息。
答案 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">
要分配的最大内存量 到分叉的VM。如果fork是忽略的话 禁用。注意:如果你得到了 java.lang.OutOfMemoryError:Java堆 你的一些测试中的空间 需要提高像 maxmemory = “128米”
答案 3 :(得分:0)
如果你使用fork,“maxmemory="###m
”似乎只能工作,如果你没有使用fork(就像我一样)它不会被使用,你必须使用ANT_OPTS
来改变堆。