【发布时间】:2015-05-01 13:48:14
【问题描述】:
我从“jmap -permstat”看到以下内容:
0x000000077736cce0 12 173472 0x00000007723425d0 dead com/sun/org/apache/xalan/internal/xsltc/trax/TemplatesImpl$TransletClassLoader@0x00000007c83bea70
0x0000000777168a20 12 172264 0x00000007723425d0 dead com/sun/org/apache/xalan/internal/xsltc/trax/TemplatesImpl$TransletClassLoader@0x00000007c83bea70
0x0000000780b3c810 12 172264 0x00000007723425d0 dead com/sun/org/apache/xalan/internal/xsltc/trax/TemplatesImpl$TransletClassLoader@0x00000007c83bea70
0x0000000776ca6170 12 172264 0x00000007723425d0 dead com/sun/org/apache/xalan/internal/xsltc/trax/TemplatesImpl$TransletClassLoader@0x00000007c83bea70
0x00000007772b28a8 12 172264 0x00000007723425d0 dead com/sun/org/apache/xalan/internal/xsltc/trax/TemplatesImpl$TransletClassLoader@0x00000007c83bea70
....
现在 permGen 中有超过 6000 个这些死掉的 TransletClassLoader 类加载器,并且数量一直在增长,直到我收到这个错误:
java.lang.OutOfMemoryError: PermGen 空间
我设置了以下 JVM 标志:
-XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSClassUnloadingEnabled
java version "1.6.0_33"
Java(TM) SE Runtime Environment (build 1.6.0_33-b04)
Java HotSpot(TM) 64-Bit Server VM (build 20.8-b03, mixed mode)
为什么不使用 CMSClassUnloadingEnabled 标志清理这些死类加载器?我该如何解决这个问题?
【问题讨论】:
标签: java garbage-collection jvm xalan permgen