java - 出现错误“ [junit] java.lang.OutOfMemoryError: PermGen space
问题描述
我们在 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
解决方案
如果您有与“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>
推荐阅读
- javascript - 在切换时更改顶部位置 JavaScript
- ios - AdMob 是否知道广告是否可见?
- sql-server - 还原 SQL Server 实例
- c++ - 围绕变量“...”的堆栈已损坏
- kotlin - Kotlin 中的可重复任务
- php - 如何在 Codeigniter 3 中测试是否触发了触发器
- angular - FormGroup 上的 ValueChanges 被触发 onKeyUp 和 onBlur
- angular - RXJS 主体和行为主体
- php - 将“kartik-v/yii2-detail-view”从“v1.7.6”更新到“v1.7.7”后出现错误
- testing - 自动调试失败的 API 测试用例