除Class对象外,Perm Gen Space(sun 1.6 VM)中还存储了什么?
|
我在运行〜300个JUnit测试并使用Spring上下文时看到\'java.lang.OutOfMemoryError:PermGen space \'。由于以下原因,很难弄清正在吞噬PermGen的原因:
在稳定状态下,该应用程序会消耗约90m的永久性空间
我已经尝试-XX:MaxPermSize = 256m进行单元测试-仍然用光
启用
-XX:+TraceClassLoading
和-XX:+TraceClassUnloading
时,在执行OutOfMemoryError
之前的最后20-30个测试时,我看不到其他“加载”事件。
后者似乎表明,除了Class对象之外,还有其他东西正在填充PermGen,不是吗?如果是这样,那会是什么?例如,是否存在将类实例存储在PermGen中的情况?
这是我的虚拟机信息:
$ 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)
有关
FWIW,导致该问题的根本原因是微不足道的:我假设Maven Surefire插件在派生VM时会从MAVEN_OPTS(或运行mvn的VM实例)继承VM设置-不会(boo)。必须在插件的配置中使用argLine明确指定那些。 HTH。
没有找到相关结果
已邀请:
3 个回复
涸坍饺
朗排谎纷瘟
搂腹时