上一篇
JVM | 堆外内存泄漏排查全流程记录
关键词与核心内容:
堆外内存定义
泄漏表现
排查工具
-XX:NativeMemoryTracking=detail
jcmd <pid> VM.native_memory detail
pmap -x <pid>
查看进程内存映射 分析Native内存地址(需结合符号表)
替换glibc,生成内存分配火焰图
常见泄漏场景
((DirectBuffer) buffer).cleaner().clean()
Native代码未释放malloc分配的内存
release()
导致池化内存堆积 定位步骤
Internal(committed/reserved)
或Direct
部分 查找匿名映射(anon)增长区域
使用Eclipse MAT检查DirectByteBuffer引用链
结合gdb或Valgrind检查JNI调用
修复与预防
System.gc()
触发Cleaner(临时方案) BufferPoolMXBean
) -XX:MaxDirectMemorySize
典型日志/输出片段:
--- NMT输出示例 ---
[0x00007fbd34c00000 - 0x00007fbd38c00000] reserved 65536KB for Internal
committed 61440KB from [0x00007fbd34c00000 - 0x00007fbd38800000]
--- pmap异常片段 ---
00007fbd38800000 10240K rw--- [ anon ] <-- 可疑增长区域
基于2025年8月前的技术实践整理,具体工具参数可能随版本迭代调整。
本文由 本飞珍 于2025-08-05发表在【云服务器提供商】,文中图片由(本飞珍)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/538551.html
发表评论