美文网首页
记一次 GC 优化, JVM 调参数过程

记一次 GC 优化, JVM 调参数过程

作者: 7圈电池 | 来源:发表于2019-10-29 22:14 被阅读0次

排查到的问题:
新生代增长速度很快, 几分钟累计了近百GB, 导致YGC 发生频繁, 越 20-30秒一次. 仅仅如此也就算了,但是当新生代慢了后,ygc后老年代大小迅速暴增,几次ygc后,老年代爆满,触发fgc,依然无法清理老年代。

猜测:
1.可能存在内存泄漏,导致大量内存无法回收
2.代码新建对象过快,且释放过慢,导致还没释放就fgc然后卡死了

收集数据:
1.开启gc日志打印,并制定保存文件
2.启动代码
3.通过jinfo查看gc实时信息,等待几次ygc
4.将打印的gc日志复制一份,下载到本地,并使用jmap对堆内存进行dump后下载到本地,若内存过大可考虑调整jvm参数缩小堆大小,相应的dump文件也会变小

分析:
1.使用在线网站 gceasy.io 对gc日志分析,这个分析主要用于优化,对于问题的排查只有大方向上的作用

2.使用MAT分析dump文件(不建议使用jVisvualVM),可查看耗内存最多的对象所属的类,由此切入,可找到内存泄漏代码处(我就是这样发现的)(才怪,我是对涉及代码一一排除,百度相关内存泄漏问题,才查出来的)

总结:
以排查异常,内存泄漏而言,使用jmap生成dump配合MAT分析堆对象情况,容易找到问题(不要学我用笨方法找)
以优化配置为由,对于gc日志,分析gc发生频率,耗时的统计数据来微调配置,用gceasy.io加gc日志是比较适合的。

思考点:
使用jVisvualVM时,有个VisvualGC可以查看随时间变化的堆的各个区的内存大小变化,而服务器在远程,比较难连接上jVisvualVM,所以无法查看这个变化数据
但是,我们通过jinfo照样可以采集实时变化数据,时候可以通过保存jinfo的信息,对其进行分析,然后一键显示随时间变化的图表动画。

相关文章

  • 记一次 GC 优化, JVM 调参数过程

    排查到的问题:新生代增长速度很快, 几分钟累计了近百GB, 导致YGC 发生频繁, 越 20-30秒一次. 仅仅如...

  • JVM系列(六):Java服务GC参数调优案例

    本文介绍了一次生产环境的JVM GC相关参数的调优过程,通过参数的调整避免了GC卡顿对JAVA服务成功率的影响。 ...

  • jvm系列(六):Java服务GC参数调优案例

    本文介绍了一次生产环境的JVM GC相关参数的调优过程,通过参数的调整避免了GC卡顿对JAVA服务成功率的影响。 ...

  • 调优

    1.8默认为parallel GC 使用G1 GC日志 调优 根据需求进行JVM规划和预调优 优化运行JVM运行环...

  • JVM GC调优入门

    JVM GC调优入门 这篇文章会介绍几个常用的调优参数,再通过两个案例介绍如何进行JVM GC调优。阅读这篇文章的...

  • 一文彻底搞懂 CMS GC 参数配置

    近期整理多个 HBase 集群的 JVM 参数,发现都是默认的 CMS GC 配置,如何调优 JVM 参数就成了一...

  • JVM | 参数

    JVM性能优化参数 1. java jvm 参数 -Xms -Xmx -Xmn -Xss 调优总结2. 为任务关键...

  • jvm GC参数调优

    (本篇主要以CMS-GC为主,如果对G1感兴趣的我后面也可以补充) 一、GC参数说明与介绍 1.1 jvm启动参数...

  • jvm垃圾清理机制

    更多参考GC及JVM参数浅析JAVA的垃圾回收机制(GC)JVM系列三:JVM参数设置、分析jvm系列 (二) -...

  • Java面试细节总结

    Java基础 Jvm内存模型有哪些,分别有哪些gc算法,如何优化jvm进程参数; HashMap的数据结构怎样的,...

网友评论

      本文标题:记一次 GC 优化, JVM 调参数过程

      本文链接:https://www.haomeiwen.com/subject/txlnvctx.html