排查SpringCloudGateway出现直接内存(Direct Memory)溢出问题

网关稳定运行了好几年,最近频繁出现直接内存溢出问题,日志出现告警:

image

image

日志显示有ByteBuf泄露,没有释放。代码中只有对响应数据进行二次处理时才会用到ByteBuf,所以仔细跟断点查了下。

发现原来的逻辑中只对NIO的ByteBuf进行了释放,没有释放Netty级别的,Netty的内存属于堆外内存,也就是Direct Memory,不属于JVM范围内的内存。

经过改造后,还在观察阶段,看是否还会再次出现。

Netty 相关说明:https://netty.io/wiki/reference-counted-objects.html

image

posted @ 2025-10-30 16:52  Commissar-Xia  阅读(1)  评论(0)    收藏  举报