频繁Full GC的一次调优

在Jenkins+Docker部署的测试环境中,遇到频繁Full GC问题,观察到GC时长和频次过高。分析启动参数及内存使用情况后,怀疑是非堆内存(Metaspace)导致。调整堆内存大小并开启GC日志,日志分析显示老年代未耗尽即触发FGC,且Metaspace持续增长。进一步监控生产环境发现Metaspace大小可能不足,同时系统使用了效率低下的Swap空间。解决方案是适当增加Metaspace大小,并避免使用Swap以减少性能影响。
摘要由CSDN通过智能技术生成

当前测试环境是在服务器的虚拟机上,基于Jenkins+docker部署, 虚拟机分配了8G内存.
通过 jstat -gcutil pid 3000查看gc情况:

  S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT   
 22.45   0.00  52.42  48.17  90.79  82.27  53    112.815    20   315.167  ‭427.982

FGC时长和频次都太高了.
于是查看启动参数如下:

JAVA_OPTS="-Xms6120m -Xmx6120m -..." ...

根据参数 Xmx6120m和当时的内存情况,我猜测可能是非堆内存的问题,但是无GC日志,不能证明自己的猜测.
于是先降了堆内存, 加上GC日志配置:

JAVA_OPTS="-Xms4096m -Xmx4096m  -verbose:gc -Xloggc:/home/java_qc_gc_%p.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCApplicationStoppedTime -XX:+PrintAdaptiveSizePolicy -XX:+UseGCLogFileRotation -XX:N
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值