生产环境又OOM了,这次是Mybatis的锅?

前言

继上次线上 CPU 出现了报警,这次服务又开始整活了,风平浪静了没几天,看生产日志服务的运行的时候,频繁的出现 OutOfMemoryError,就是我们俗称的 OOM,这可还行!

频繁的 OOM 直接会造成服务处于一个不可用的情况,最严重的一天,它重启了 5 次。我通过 Skywalking 查看链路调用,基本全报红了,基本处于一个瘫痪状态,因为生产该服务是分布式部署,k8s 故障恢复当即对该服务进行重启,因为是 B 端的产品,先让公司业务能用起来了,保证服务的正常使用,然后紧急查看问题。

当然这个问题很多同事不会排查,老板就让我亲自动手了。既然分配给我了,咱高低给它查出来,并且修复了。

OutOfMemoryError出现的原因

先来了解下OutOfMemoryError出现的原因,无非就是两类堆内存空间不足、元空间不足。

  1. 堆内存空间不足:意味着程序存在一直有引用的对象(强引用),主要对象在引用的状态就无法被GC回收,撑爆了-Xmx堆拓展的最大值,内存不足自然就会触发堆内存溢出。

  2. 元空间:Java 8 引入了元空间概念,代替了之前堆的永久代,由于元空间属于堆外内存,不需要有对象引用,通过指针的方式表示类和元数据,之所以引用元空间就是一种 JDK 的升级优化,避免了永久代的内存溢出。详细内容参见https://t.zsxq.com/0fdOtNgEQ

常见堆

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值