JVM调整 - 快速填充Young Generation&总堆使用量

时间:2016-10-27 15:17:11

标签: java garbage-collection jvm

以下是运行WebApp的Tomcat JVM的JVM参数:

-Xmx14G
-Xms14G
-XX:PermSize=300M
-XX:MaxPermSize=300M
-Xss256K
-XX:+HeapDumpOnOutOfMemoryError
-XX:NewRatio=3
-verbose:gc
-XX:+DisableExplicitGC
-XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=75
-XX:+CMSPermGenSweepingEnabled
-XX:+CMSClassUnloadingEnabled
-XX:+UseCMSInitiatingOccupancyOnly
-XX:+CMSParallelRemarkEnabled
-XX:+ParallelRefProcEnabled
-XX:+ScavengeBeforeFullGC
-XX:+CMSScavengeBeforeRemark

在负载下,系统显示以下“问题”:

  • Young(伊甸园)空间在不到1分钟的时间内快速充满,导致GC大约为3.5GB。我认为这是由新比率= 3. 我的问题引起的,如果这个数量减少到1,从而创建了50:50的堆并增加了Eden GC之间的时间,还是有更好的选择?

  • 总堆使用率从未达到14GB。它永远不会超过总共约6GB。考虑到启动参数,我预计完整GC为75%,但这远远低于10.5GB(或者总数的75%)我的问题,这是预期的还是我忽略了什么?

问题二的可能解决方案:

旧空间正在缓慢填充并从4GB稳步增加。 Young Space正在快速填充到3.5GB然后GC发生,堆降到4GB级别。所以因为Old Space需要很长时间才能完成,并且Young GC如此频繁,所以看起来14GB的堆永远不会被使用,因为Old需要这么长时间才能增加。在这种情况下,我应该为Young分配更多空间吗?

0 个答案:

没有答案