记一次线上堆外内存泄漏排查


1、背景

某项目后端服务运行几天后,频繁收到产品、研发同事反馈系统页面提示登录报错等问题,而服务主调方调用接口也出现 502,导致产品系统功能无法使用。

2、顺藤摸瓜

image-20241019113118144

image-20241019113246793

top 命令查看资源使用情况,发现 java 进程使用了超过 4G 的内存,理论上进程使用内存不应该超出 4G 才对,而通过 jmap 命令 dump 堆内存发现,堆内存只使用了 1G 多的内存,因此怀疑是堆外内存出现泄漏。

4、总结