当老/年轻人有很多空间时,我看到频繁的主要gc。
我唯一看到的是幸存者空间始终是100%满满的。 java vm args如下所示
-Xms2200m -Xmx2200m -XX:NewSize=600m -XX:MaxNewSize=600 -XX:SurvivorRatio=3 -XX:PermSize=128m -XX:MaxPermSize=292m -XX:+UseParNewGC -XX:+UseTLAB -XX:+UseConcMarkSweepGC
-XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled -XX:+PrintTenuringDistribution
在下面添加指向gc日志的链接。请提供有关我应该注意什么的任何指导。
由于
答案 0 :(得分:1)
幸存者空间100%通常都可以(理想情况下它应该略低于100%)。
这两篇文章可以为您提供关于代际GC和CMS机制的基本概念
回到你的问题。
您启用了类卸载(XX:+CMSClassUnloadingEnabled
),这意味着以下内容。
如果PERM gen使用率接近其极限(例如90%),这对于PERM来说是完全正常的,那么将开始CMS集合。如果没有要卸载的类,CMS循环将不会释放PERM中的任何空间,并且下一个CMS集合将立即触发。
简而言之,如果PERM填充接近其容量 - 并发收集将不停地运行。