下面是一个JVM一个jstat
输出具有下列参数为什么JVM做这么多的垃圾收集
-Xmx10240m -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode
的jstat输出与参数运行
jstat -gcutil <pid> 10s
的部分是片段在80秒的时间内,根据统计近70秒这是花在GC上。他们都是正在触发的完整GC。
Timestamp S0 S1 E O P YGC YGCT FGC FGCT GCT Diff
1040430.2 0 0 23.69 24.58 95.03 168048 22187.057 3672 4483.931 26670.988 8.175
1040440.2 0 0 0.1 24.58 95.02 168048 22187.057 3674 4495.551 26682.608 11.62
1040450.2 0 0 4.19 24.59 95.03 168048 22187.057 3677 4506.731 26693.788 11.18
1040460.2 0 0 0.01 24.45 95.02 168048 22187.057 3679 4517.391 26704.448 10.66
1040470.2 0 0 0.33 24.45 95.03 168048 22187.057 3681 4522.213 26709.27 4.822
1040480.2 0 0 0 24.43 95.02 168048 22187.057 3684 4534.816 26721.874 12.604
PermGen的空间运行在几乎满,但我没想到的是,太阳GC机制将尝试在这里收集和我可以看到所收集的基础上,伊甸或旧空间的理由。
任何能给我指点的人都是可能发生的事情?
您能否指出一个说明PermGen将由CMS算法收集的文档?我一直无法看到没有明确设置标志CMSPermGenSweepingEnabled的情况。 – bstick12
'CMSPermGenSweepingEnabled'在Java 6中似乎已被弃用。然而,大多数人使用'CMSClassUnloadingEnabled'和'CMSPermGenSweepingEnabled'来启用集合中的permgen Java 6.最接近我可以找到这种行为的文档是[OpenJDK邮件列表](http://mail.openjdk.java.net/pipermail/hotspot-gc-dev/2008-October/000522.html)和在Sun bug数据库中[对于错误5037027](http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5037027)和[6250214](http://bugs.sun.com/bugdatabase/view_bug)。 do?bug_id = 6250214) –
接受答案似乎是最合乎逻辑的解释。文件是这方面非常差。 – bstick12