获取错误“ [junit] java.lang.OutOfMemoryError:PermGen空间

问题描述 投票:0回答:1

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

ANT_OPTS=-Xmx4098m
export ANT_OPTS

JAVA_OPTS=-Xmx16392m
export JAVA_OPTS

在获得permgen空间问题后,如下所述更改了参数的值。但仍然没有运气。

ANT_OPTS=-Xmx4098m
export ANT_OPTS

JAVA_OPTS=-Xmx32784m
export JAVA_OPTS
java linux unit-testing junit ant
1个回答
0
投票

如果您有与“ permGen”空间相关的内存分配错误,则意味着您使用Java 7或更低版​​本。因此,作为一个旁注,如果您运行Java 8或更高版本,就不会再看到此错误,因为该空间本身已不存在,并且仅限于可用的本机内存。

用于管理PermGen空间的JVM选项为XX:MaxPermSize。因此,您应该使用以下命令行参数来运行单元测试,以将其添加到JVM:-XX:MaxPermSize=256m

ANT_OPTS环境变量将配置Ant本身使用的JVM。如果单元测试未按派生方式运行,则应使用此环境变量。

如果在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>
© www.soinside.com 2019 - 2024. All rights reserved.