Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从ANT运行junitreport时发生OutOfMemoryError_Java_Ant_Jenkins_Environment Variables_Out Of Memory - Fatal编程技术网

Java 从ANT运行junitreport时发生OutOfMemoryError

Java 从ANT运行junitreport时发生OutOfMemoryError,java,ant,jenkins,environment-variables,out-of-memory,Java,Ant,Jenkins,Environment Variables,Out Of Memory,我们有一份Jenkins的工作来测试我们的应用程序。执行时,我们会在执行目标时得到著名的OutOfMemoryError,该目标使用以下代码段生成junitreport <junitreport todir="${tmp.dir}/reports-test-shared"> <fileset dir="${tmp.dir}/reports-test-shared"> <include name=

我们有一份Jenkins的工作来测试我们的应用程序。执行时,我们会在执行目标时得到著名的OutOfMemoryError,该目标使用以下代码段生成junitreport

        <junitreport todir="${tmp.dir}/reports-test-shared">
            <fileset dir="${tmp.dir}/reports-test-shared">
                <include name="TEST-*.xml" />
            </fileset>
            <report format="frames" todir="html" />
        </junitreport>
编辑:build.xml中的第818行是上面显示的junitreport任务

我已经看过其他问题中提出的一些建议,例如,和

最常见的建议是

在JAVA_选项中增加Xms和Xms 在ANT_选项中增加Xmx和Xms 以下是我迄今为止所做的工作:

将环境变量JAVA_OPTS设置为-Xms512m-Xmx2048m 将环境变量ANT_OPTS设置为-Xms512m-Xmx2048m 在tomcat/bin目录中创建setenv.sh,我在其中执行以下操作:export JAVA_OPTS=$JAVA_OPTS-Xms512m-Xmx2048m 在环境变量JAVA_OPTS和ANT_OPTS中添加了-XX:MaxPermSize=256m 我的问题如下。我不知道我所做的内存设置是否是ANT用来运行报表生成junitreport的设置

我必须在何处增加堆大小才能使junitreport在没有OutOfMemoryError的情况下终止?

尝试如下设置junit ant目标的maxmemory选项

<junit maxmemory="512m" fork="true">
注意,根据junit ant目标,您需要设置fork=true,以便获取maxmemory元素。否则它将被忽略。

尝试如下设置junit ant目标的maxmemory选项

<junit maxmemory="512m" fork="true">
注意,根据junit ant目标,您需要设置fork=true,以便获取maxmemory元素。否则将被忽略。

请尝试添加

-Xms512m
-Xmx1024m
-XX:MaxPermSize=256m
请尝试添加

-Xms512m
-Xmx1024m
-XX:MaxPermSize=256m

这样的问题可以用另一种方法解决。我没有增加堆空间,而是试图找到需要如此大空间的原因。我发现一个测试向sysout写入了大量信息。这导致生成的xml文件大于200mb。显然对于2或3 gb的堆大小来说太大了。

这样的问题可以用另一种方法解决。我没有增加堆空间,而是试图找到需要如此大空间的原因。我发现一个测试向sysout写入了大量信息。这导致生成的xml文件大于200mb。显然对于2或3 gb的堆大小来说太大了。

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

对我来说,有效的方法是增加传递给ant的最大堆大小,例如-Xmx3304m

在Jenkins中,您可以在InvokeAnt>Advanced>JavaOptions中将最大堆大小传递给ANT 并添加类似-Xmx2000m的内容


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

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

对我来说,有效的方法是增加传递给ant的最大堆大小,例如-Xmx3304m

在Jenkins中,您可以在InvokeAnt>Advanced>JavaOptions中将最大堆大小传递给ANT 并添加类似-Xmx2000m的内容


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

这不完全是詹金斯的问题。。我已重新标记以为您找到合适的专家这是build.xml中818行的junitreport任务吗?@Petrosemiuk:是的。这完全不是Jenkins的问题。。我已重新标记以为您找到合适的专家这是build.xml中818行的junitreport任务吗?@Petrosemiuk:是的。对不起,我没有提到我们不使用junit任务进行测试,而是使用pde.launch.test.product。对不起,我没有提到我们不使用junit任务进行测试,而是使用pde.launch.test.product。您的意思是显式地将堆大小设置为该值还是一般地设置它们?我设置了MaxPermSize,但没有帮助。您的意思是显式地将堆大小设置为该值还是一般地设置它们?我设置了MaxPermSize,但没用。我发现了类似的东西。特别是一个测试输出的跟踪信息太多,导致junitreport任务失败。关闭跟踪解决了这个问题。如果在以后的某个时间,测试由于某种原因失败,那么为调试行为打开跟踪是一件小事。特别是一个测试输出的跟踪信息太多,导致junitreport任务失败。关闭跟踪解决了这个问题。如果在以后的某个时间,测试由于某种原因失败,那么为t打开跟踪是一件小事 他在表演。