十分钟学会GC问题简单排查流程

背景

线上的Java服务经常会遇到内存回收不到而导致GC频繁发生,严重影响服务质量,那么遇到这种问题该如何排查?本文就是一个GC问题排查的简单系统性分析。

一、如何排查

1.日志监控平台

目前市面上大多数公司都接入了日志监控系统,比如Grafana,一般这些系统都会配置收集各个集群里面每个实例的JVM监控信息。所以在监控平台里面我们就可以看到这些实例的GC信息,并对GC进行报警设置。所以通过经验的增加,也许从日志监控平台就能快速发现问题所在。

2.命令jstat

通过一些自带的命令,登录上服务器去查看实时的GC情况。

2.1 jstat -gc

显示与GC相关的堆信息。包括Eden区、两个Survivor区、老年代、永久代等的容量、已用空间、GC时间合计等信息。

image-20240702224204088

2.2 jstat -gcutil

显示内容与-gc基本相同,但输出主要关注已使用空间占总空间的百分比。

image-20240702224239296

表头 含义
EC Eden区的大小
EU Eden区已使用的大小
S0C 幸存者0区的大小
S1C 幸存者1区的大小
S0U 幸存者0区已使用的大小
S1U 幸存者1区已使用的大小
MC 元空间的大小
MU 元空间已使用的大小
OC 老年代的大小
OU 老年代已使用的大小
CCSC 压缩类空间的大小
CCSU 压缩类空间已使用的大小
YGC 从应用程序启动到采样时young gc的次数
YGCT 从应用程序启动到采样时young gc消耗时间(秒)
FGC 从应用程序启动到采样时full gc的次数
FGCT 从应用程序启动到采样时的full gc的消耗时间(秒)
GCT 从应用程序启动到采样时gc的总时间

2.3 总结

  • 如果频繁发生YGC但很少发生FGC,说明在大量创建临时对象,然后又被回收掉了。
  • 如果Old区域使用很高又频繁FGC,那说明内存泄漏了。(注意内存泄漏与内存溢出的区别)

需要更详细的关于JVM的命令可查看我的其他文章,在中有详细的介绍。

3. 堆内存分析

  1. dump内存:使用jmap -dump命令将堆内存给下载出来

  2. MAT分析

    1. 打开Dominator Tree

    2. 分析内存最大对象

image-20240702225650691

堆内存分析的工具有许多,熟悉一个使用即可。

二、总结

内存泄漏情况:一般发生这种,大多数都是因为能存活很久的对象引用了短生命周期的对象,导致短生命周期对象不能及时释放。

内存泄漏:程序在申请内存后,无法释放已经申请的内存。

内存溢出:程序在申请内存的时候,没有足够的内存空间供其使用。

这篇文章还是过于理论,但是博主作为24届毕业生实在没有遇到过线上发生GC的情况,如果遇到了应该也是老员工去处理,下次有幸参与排查的话,再重开一篇文章记录一下真实的GC排查过程。

#Java大厂如何面试##24届秋招同行攻略分享##我的实习求职记录##JVM##牛客在线求职答疑中心#
全部评论
永久代不是变成元空间了么?jstat -gc这一段内容是不是笔误了
点赞 回复 分享
发布于 2024-08-21 11:22 广东

相关推荐

面试拷打成m:我感觉他说的挺对的,感觉我找不到工作也要去送外卖了,至少饿不死
点赞 评论 收藏
分享
10-23 16:33
门头沟学院 Java
本人某中9本科,成绩中等,目前没科研没实习,目前后端学到了javaWeb,开始没定好方向,在学国外课程,走工程路线起步有点晚了,到这个时间点了还在学JavaWeb,顿感迷茫,不知道是坚持走下去还是寒假去准备考研。考研这个路弄得我还是心痒痒的,因为从众考研的人也不在少数,所以会有这方面的心理安慰吧,就是“不行我可以去考研啊”,而且意味着三年的缓冲,为了复试还有积攒经验美化简历,其实现在也可以去申入实验室打杂;就业可能意味着多些工作经验,工程岗应该到后面还是经验大于学历?还是有点迷茫了,求助好心人有无路线启发
千千倩倩:同27给点建议,现在这个时间点可以快速看完外卖和点评,不用跟着敲,但一定要在看的时候总结每个部分的整个业务流程,对其中的实现有一个大概的印象。然后直接开始看八股,刷算法。八股和算法最好还是在项目学习中穿插着看。如果计算机基础,算法这些基础好,加上每天刻苦学习,两周可以达到勉强能面试的水平,到时候就直接海投中小厂,在约面和面试的过程中不断巩固知识。没找到实习也没关系,就当积累经验。再沉淀一波直接明年三月开始投暑期,毕竟是9本,总是有面试机会的,只要你这三个月不懈怠,面试发挥得一定不错,只要拿到一个中,大厂暑期实习,秋招就有竞争力了。总得而言,现在还有机会,但是时间非常紧张,需要你结合自己情况考虑,共勉
你会选择考研还是直接就业
点赞 评论 收藏
分享
评论
7
53
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务