得到错误";[junit]java.lang.OutOfMemoryError:PermGen空间



我们在linux服务器中运行Junits。突然之间,我们开始遇到permGen空间问题。以下是我们用来设置空间的参数。最大烫发尺寸的默认值为174063616

ANT_OPTS=-Xmx4098m
export ANT_OPTS
JAVA_OPTS=-Xmx16392m
export JAVA_OPTS

在得到置换空间问题后,我改变了参数的值,如下所述。但仍然没有运气。

ANT_OPTS=-Xmx4098m
export ANT_OPTS
JAVA_OPTS=-Xmx32784m
export JAVA_OPTS

如果您有与"permGen"空间相关的内存分配错误,则表示您使用的是Java 7或更低版本。因此,顺便说一句,如果您运行Java 8或更高版本,您就不应该再看到这个错误了,因为这个空间本身已经不存在了,并且仅限于可用的本地内存。

管理PermGen空间的JVM选项是XX:MaxPermSize。因此,您应该在运行单元测试的JVM中添加以下命令行参数:-XX:MaxPermSize=256m

ANT_OPTS环境变量将配置Ant自身使用的JVM。如果单元测试没有以forked的方式运行,则应该使用此环境变量。

如果您在Ant派生的JVM中运行单元测试,那么您应该告诉Ant使用一些额外的JVM参数来启动Junit任务。您需要使用的参数是jvmarg

请参阅Ant关于该任务的官方文档:https://ant.apache.org/manual/Tasks/junit.html

因此,这里有一段XML来设置正确的属性:

<junit fork="yes">
<jvmarg value="-XX:MaxPermSize=256m" />
</junit>

最新更新