识别思路总览
从系统日志与资源监控发现异常
从 GC 日志识别堆内泄漏信号
从 OOM 类型快速判断泄漏所在区域
| 区域 | 典型 OOM 类型 | 常见线索 |
|---|---|---|
| 堆内存 | Java heap space | Full GC 后占用仍高、对象分配速率异常 |
| 元空间 | Metaspace | 动态类加载/代理过多、类加载器泄漏 |
| 直接内存 | Direct buffer memory | 大量 NIO/Netty 使用 ByteBuffer.allocateDirect |
| 本地内存 | unable to create new native thread 等 | RSS 远高于 -Xmx、线程数异常增多 |
| 数组过大 | Requested array size exceeds VM limit | 单次分配超大数组失败 |
用堆转储与引用链定位泄漏根因