针对 Netty 堆外内存溢出及 `Direct Memory` 告警问题展开分析,常见触发场景见 章节五。
一、核心问题诊断
1. **直接内存泄漏特征**
• 堆外内存持续增长直至触发 `io.netty.util.internal.OutOfDirectMemoryError` 告警
• 伴随堆内内存小幅攀升(因 Netty 内存池管理结构占用堆内)
• 日志中出现 `failed to allocate xxx bytes of direct memory` 高频报错
2. **泄漏根源分析**
```mermaid
graph TD
A[内存泄漏场景] --> B{常见原因}
B --> C[未释放 PooledDirectByteBuf]
B --> D[SSLContext 匿名类泄漏]
B --> E[Netty 内存统计机制缺陷]
C --> F("ByteBuf.release() 未调用或异常未触发释放")
D --> G("OpenSslClientContext 被 Native Stack 强引用")
E --> H("PlatformDependent 统计值与实际占用不匹配")
```
• **SSL 上下文泄漏**&#x