jvm 优化篇-(2)-jvm-CMS-老年代设置过大导致yonggc响应越来越高

经过给项目pops-settlement 内存优化,发现一个现象就是,内存设置老年代和新生代比率:3:1
项目总大小:4G
启动参数:-Xms4g -Xmx4g -XX:PermSize=384m -XX:MaxPermSize=384m -XX:NewSize=800m -XX:MaxNewSize=800m -XX:SurvivorRatio=18 -XX:+UseParNewGC -XX:ParallelGCThreads=2 -XX:MaxTenuringThreshold=5 -XX:+CMSParallelRemarkEnabled -XX:+CMSScavengeBeforeRemark -XX:+UseConcMarkSweepGC -XX:+DisableExplicitGC -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=60 -XX:+ScavengeBeforeFullGC -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=5 -XX:+CMSClassUnloadingEnabled -XX:+ExplicitGCInvokesConcurrent

导致运行4天后,显现yonggc时间拉高
刚运行:


image.png

运行一天后:


image.png

运行四天后:
image.png

老年代oldgc一次也没执行过(未达到设定的阀值):

image.png

经过查看其它项目发现,oldgc的执行,也会影响yonggc运行times:


image.png

老年代垃圾的回收,会影响新生代内存。

2018-01-23经过查询帖子发现,还有可能是Stringtable存储过多导致的,Stringtable存储的字符串常量,只有oldgc和fullgc才会回收这个数据结构。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容