Nik*_*ita 15 java jvm out-of-memory permgen maven-surefire-plugin
我在运行~300 JUnit测试并使用Spring上下文时看到'java.lang.OutOfMemoryError:PermGen space'.从那时起,我很难搞清楚PermGen吃了什么东西:
-XX:+TraceClassLoading和-XX:+TraceClassUnloading启用后,我会在执行最后20-30次测试之前看到没有其他"加载"事件OutOfMemoryError.后者似乎表明除了Class对象之外的东西正在填充PermGen,不是吗?如果是这样,它会是什么?例如,是否存在类实例存储在PermGen中的情况?
这是我的VM信息:
$ java -version
java version "1.6.0_25"
Java(TM) SE Runtime Environment (build 1.6.0_25-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.0-b11, mixed mode)
Run Code Online (Sandbox Code Playgroud)
有关
FWIW,我的问题的根源促成了这篇文章,结果有些微不足道:我假设Maven Surefire插件在MAfor_OPTS(或运行mvn的虚拟机实例)的情况下从虚拟机中继承VM设置 - 它没有(boo).必须在插件的配置中明确指定使用argLine的那些.HTH.
有时滥用String.intern()可能会导致 PermGen 空间不足错误,因为 interned String 实例存储在 PermGen 中。
这可能就是您所看到的 - 尝试消除不必要的 String.intern() 调用,看看这是否可以解决问题。一般来说,我不建议使用 String.intern() ,除非您确定以下两条都是正确的:
| 归档时间: |
|
| 查看次数: |
4221 次 |
| 最近记录: |