使用 dotMemory 分析 .NET 应用内存使用,核心在于捕获内存快照并分析对象分配、引用关系和潜在泄漏。dotMemory 是 JetBrains 推出的专业内存分析工具,适用于诊断 .NET 和 .NET Core 应用的内存问题。
启动分析:附加到进程或独立运行
打开 ReSharper 或独立的 dotMemory 应用,选择要分析的目标:
附加到正在运行的进程:在主界面点击“Attach to Process”,找到你的 .NET 应用程序进程,点击“Attach”。dotMemory 会注入探针,开始监控内存。 启动新应用进行分析:使用“Run application under dotMemory”功能,选择可执行文件路径,配置启动参数后运行。这种方式适合从启动阶段就开始监控。捕获内存快照
在应用运行过程中,关键操作前后手动触发快照,便于对比:
点击“Get Snapshot”按钮,dotMemory 会暂停应用短暂时间,收集当前托管堆中所有对象的信息。 建议在以下场景拍摄快照: 应用启动后(基线) 执行某功能前与后(如打开窗口、加载数据) 怀疑内存泄漏的操作之后分析快照:查找内存问题
进入快照详情页,重点关注以下几个视图:
Objects by Size:查看占用内存最多的类型,识别大对象或异常增长的集合。 Dominant Path:分析对象为何未被回收。选中某个类型,查看其“Incoming References”和“Dominators”,找出阻止 GC 回收的根引用链。 Compare Snapshots:对比两个快照间的对象数量变化。如果某些类型实例数持续上升且不下降,可能是内存泄漏信号。 Memory Traffic:观察短期对象的分配情况,帮助发现频繁创建的小对象(如字符串拼接、装箱)。定位常见问题示例
比如发现 List
基本上就这些。掌握快照时机和引用分析逻辑,就能高效排查 .NET 应用的内存问题。不复杂但容易忽略细节。
