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


日志显示有ByteBuf泄露,没有释放。代码中只有对响应数据进行二次处理时才会用到ByteBuf,所以仔细跟断点查了下。
发现原来的逻辑中只对NIO的ByteBuf进行了释放,没有释放Netty级别的,Netty的内存属于堆外内存,也就是Direct Memory,不属于JVM范围内的内存。
经过改造后,还在观察阶段,看是否还会再次出现。
Netty 相关说明:https://netty.io/wiki/reference-counted-objects.html


浙公网安备 33010602011771号