getting Error " [junit] java.lang.OutOfMemoryError: PermGen space

getting Error " [junit] java.lang.OutOfMemoryError: PermGen space

我们在 linux 服务器中有 运行 个 Junits。突然间我们开始遇到 permGen space 问题。下面是我们用来设置 space 的参数。最大烫发大小的默认值为 174063616

ANT_OPTS=-Xmx4098m
export ANT_OPTS

JAVA_OPTS=-Xmx16392m
export JAVA_OPTS

获得 permgen space 问题后,我更改了参数值,如下所述。但是还是不行。

ANT_OPTS=-Xmx4098m
export ANT_OPTS

JAVA_OPTS=-Xmx32784m
export JAVA_OPTS

如果您有与 "permGen" space 相关的内存分配错误,这意味着您 运行 的 Java 7 或更差。因此,作为旁注,如果您 运行 是 Java 8 或更高级别,您不应该再看到此错误,因为 space 本身不再存在并且仅是有限的到可用的本机内存。

管理 PermGen space 的 JVM 选项是 XX:MaxPermSize。所以你应该用 运行s 添加到 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>