如何通过Eventpipe获取运行中.NET应用的托管内存使用明细
运行中.NET应用内存使用明细获取方案
一、dotnet-dump 内存对象分析实操步骤
你之前用了dotnet-dump但不知道怎么查看对象,按以下步骤操作就能拿到目标明细:
- 捕获运行中应用的dump文件:
dotnet-dump collect -p <你的进程ID> - 进入dump分析交互会话:
dotnet-dump analyze <生成的dump文件路径> - 核心分析命令:
dumpheap -stat:按类型统计内存占用,输出各类型的实例数量、总大小,对应你要的内存使用明细概览dumpheap -type <目标类型名>:查看指定类型的所有实例详情,包括每个实例的内存地址、大小,和你提到的微软文档示例视图匹配gcroot <对象内存地址>:追踪指定对象的引用链,排查内存泄漏根源
二、基于EventPipe的实时内存追踪(无需生成dump)
如果不想生成dump文件,直接用EventPipe生态工具实时获取运行中应用的内存数据:
- 使用
dotnet-trace采集内存事件:
生成的dotnet-trace collect -p <进程ID> --providers Microsoft-DotNETCore-SampleProfiler,Microsoft-Windows-DotNETRuntime:0x2000:5.nettrace文件用PerfView打开后,在「Memory」视图中可查看实时的对象分配统计、存活实例明细,完全满足你的需求。 - 更直观的可视化方式:用Visual Studio性能探查器,选择「.NET内存分配」会话,直接附加到运行中的进程,能可视化查看内存对象的类型、实例数、大小,就是你说的微软文档示例里的界面。
三、关键词修正建议
之前没找到资料大概率是关键词偏差,换这些关键词搜索:
- .NET 运行中内存对象分析
- dotnet-dump 内存实例查询
- EventPipe 实时内存追踪
- PerfView 内存明细视图
内容的提问来源于stack exchange,提问作者russelrillema
相关产品推荐
相关产品推荐

