机器越来越慢,swap 用到 90%。

查:

  • 堆内存正常
  • 但 RSS 持续增长
  • pmap 看到大量匿名映射

原因:NIO 的 DirectByteBuffer 没释放,堆外内存泄漏。这部分内存不受 -Xmx 限制,但算在进程 RSS 里,压力大了就往 swap 赶。

解决:

  1. 加 -XX:MaxDirectMemorySize 限制
  2. 排查代码里的 ByteBuffer 使用,确认有没有 release
  3. 短期靠定期重启缓解

这类问题监控容易被忽略,因为堆内存指标看着一直正常。

补的监控:进程 RSS 曲线,而不只是堆使用率。

主楼