.NET内存漏洞排查方法
2023-06-01 12:07:39
微软提供了如下工具:
- dotnet-counters 检查托管内存的使用情况。
- dotnet-dump 收集和分析转储文件。 可方便排查内存泄漏情况。
工具安装
- dotnet tool install --global dotnet-counters
- dotnet tool install --global dotnet-dump
监控内存状态
- 启动.net 应用
- dotnet-counters ps
之后会出现.net所有进程,第一列是进程id,记下要排查的进程id.如:1234 - dotnet-counters monitor --refresh-interval 1 -p1234
发请求或刷新网页,监控内存状态,主要看GC Heap Size (MB) 大小。
GC Heap Size (MB)在请求时会增长,但停止请求后会回落。频繁请求停止后,该大小没大变化,说明基本没泄涮。
有泄漏后查原因
- dotnet-dump collect -p 1234
会提示生成一个xxxxx.dmp文件 - dotnet-dump analyze xxxxx.dmp
进入后有命令提示: - dumpheap -stat
会输出heap中所有内存情况,重点排查
- 与请求次数接近的内存块
- 自己程序中namespace的内存块