微服务应用启动时候,产生几次fullgc分析

1 篇文章 0 订阅
1 篇文章 0 订阅

问题,在生产环境中,发现很多应用在启动的时候,就会出现几次fullgc,但是在gc.log中并未发现相应的fullgc日志。应用也能正常启动成功。

  1. 应用分配了4G内存;
  2. 镜像为openjdk8;
  3. jvm参数为:
    -Xms2688m 
    -Xmx2688m 
    -Xloggc:/**/gc.log 
    -XX:NewSize=900m 
    -XX:MaxNewSize=900m 
    -XX:+UseConcMarkSweepGC 
    -XX:CMSFullGCsBeforeCompaction=5 
    -XX:+UseCMSCompactAtFullCollection 
    -XX:+CMSParallelRemarkEnabled 
    -XX:+CMSPermGenSweepingEnabled 
    -XX:+CMSClassUnloadingEnabled 
    -XX:+HeapDumpOnOutOfMemoryError 
    -XX:+PrintGCDetails 
    -XX:+PrintGCDateStamps 
    -verbose:gc 
    -XX:+PrintClassHistogramBeforeFullGC 
    -XX:+PrintClassHistogramAfterFullGC 
    -XX:+PrintCommandLineFlags 
    -XX:+PrintGCApplicationConcurrentTime 
    -XX:+PrintGCApplicationStoppedTime 
    -XX:+PrintTenuringDistribution 
    -XX:+PrintHeapAtGC 
    -XX:+UseCMSInitiatingOccupancyOnly 
    -XX:CMSInitiatingOccupancyFraction=70 
    -XX:+DisableExplicitGC 
    -XX:+UseCompressedOops 
    -XX:+DoEscapeAnalysis 
    -XX:MaxTenuringThreshold=10 



    现象:在启动成功后通过jstat查询,多次发现都有4次fullgc,如图所示:

因为应用能成功部署,并正常访问等情况,可以判断发现堆内存等分配都是比较正常,并且gc日志并未找到相关的fullgc日志。
经过度娘和谷歌等,并未找到直接类似的答案,但是注意到openjdk8新增了元空间,而且元空间默认大小为21M,对于一个比较大的应用,空间不足导致fullgc,然后动态扩展了几次,为了验证下猜想,新增了元空间的默认大小设置:-XX:MetaspaceSize=200M,然后部署成功,并jstat查询:



验证了猜想。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值