当前位置: 首页 > news >正文

CMS如何调优

业务JVM频繁Full GC如何排查

原则是先止损,再排查。
FGC的原因是对象晋升失败或者并发模式失败,原因都是老年代放不下晋升的对象了。
1.可能是大对象导致的内存泄漏。快速排查方法:观察数据库网络IO是否和FGC时间点吻合,找到对应的SQL和代码。分析内存dump。可以使用jvisualvm查看,TODO 需要了解分析工具中指标的含义,这种方式定位的时间比较长
https://cloud.tencent.com/developer/article/1824276
2.可能是内存泄漏。排查方法:(1)查看老年代内存使用情况,如果内存使用率很高则可能是内存泄漏,代码有问题。(2)分析监控,是否每次GC后内存使用率都是上升的。分析内存堆栈。
在Java中,如果发生内存泄漏,会导致GC回收不彻底,每次GC后,堆内存使用率逐渐增高
https://www.jianshu.com/p/1c6bc8842463
3.如果是比较稳定的系统,并且不是所有的环境都有FGC的问题,则可能是JVM参数设置得有问题。
4.故障可以先执行jstack和jmap看看内存情况,然后进行止损操作
https://java.isture.com/java/jvm/java-jvm-gc-log.html

一些参考资料

1.JVM堆或者元数据空间不足或者OOM 可以明显看到GC线程占用率明显高于其他线程
https://arthas.aliyun.com/doc/dashboard.html#%E6%95%B0%E6%8D%AE%E8%AF%B4%E6%98%8E
2.CMS GC的分析和解决
TODO https://tech.meituan.com/2020/11/12/java-9-cms-gc.html
3.GC优化参数如何设置
TODO https://engineering.xueqiu.com/blog/2015/06/25/jvm-gc-tuning/

一些分析工具和实际案例

https://zhuanlan.zhihu.com/p/491729418
上面是一下GC日志分析工具,GCeasy实际使用体验不错,下面是使用这个工具分析的例子

一个业务系统GC频繁,从cat上看每分钟OGC时间2s+,YGC时间1.5s。使用这个工具可以看到YGC和OGC都很频繁 ,说明是堆大小不够用。
在这里插入图片描述
在这里插入图片描述
并且在GC后堆内存都能回收,说明不是堆泄漏。
在这里插入图片描述

参考

CMS和GC调优原理
https://caison.github.io/2019/10/13/li-jie-java-gc-yuan-li-he-diao-you/#toc-heading-13
java内存区域说明
https://www.lixueduan.com/posts/java/07-jvm-runtime-area/
什么事增量式GC
https://liujiacai.net/blog/2018/08/04/incremental-gc/

问题

1.CMS的阶段并发可取消的预清理,循环终止条件之一是新生代内存使用率达到阈值,达到了阈值会做什么操作?触发YGC?
2.CMS的阶段并发可取消的预清理,会进行YGC吗?

http://www.lryc.cn/news/286687.html

相关文章:

  • 在PyCharm中安装GitHub Copilot插件,login之后报出如下错误:
  • L1-093 猜帽子游戏(Java)
  • JVM篇--JVM调优高频面试题
  • 微软 AD 介绍 | 安全建议 | 防护
  • React16源码: React中的reconcileChildren的源码实现
  • 幻兽帕鲁Docker服务端搭建
  • 【ARM Cortex-M 系列 1.1 -- Cortex-M33 与 M4 差异 详细介绍】
  • docker 部署及命令
  • API接口安全总结
  • 性能优化-HVX 指令介绍
  • web安全思维导图(白帽子)
  • 美,英,法,德、意大利和西班牙的geojson,以及区域json
  • JavaEE-微服务-Vuex
  • 在Windows虚拟机中挂载IP代理的流程
  • 软考之软件工程
  • 微信小程序(六)tabBar的使用
  • 写Shell以交互方式变更Ubuntu的主机名
  • SpringBoot整合ElasticSearch实现基础的CRUD操作
  • 【PyTorch】记一次卷积神经网络优化过程
  • C++面试宝典第24题:袋鼠过河
  • 2401vim,vim标号
  • Web开发中HTTP请求、响应等相关知识
  • [Android] Android文件系统中存储的内容有哪些?
  • 透明拼接屏在汽车领域的应用
  • “深入理解RabbitMQ交换机的原理与应用“
  • Programming Abstractions in C阅读笔记:p248-p253
  • 面试题目,你对前端工程化的了解
  • 2023年春秋杯网络安全联赛冬季赛 Writeup
  • docker安装Rabbitmq教程(详细图文)
  • java web mvc-05-JSF JavaServer Faces 入门例子