使用dotMemory分析.NET应用内存需先捕获快照,再分析对象分配与引用关系。首先通过“Attach to Process”附加到运行中的进程或使用“Run application under dotMemory”启动新进程以监控内存。在关键操作前后点击“Get Snapshot”获取内存状态,建议在应用启动后、功能执行前后及可疑操作后拍摄快照。进入快照详情后,利用“Objects by Size”识别大对象或异常集合;通过“Dominant Path”查看阻止GC回收的根引用链;使用“Compare Snapshots”对比不同时间点的对象数量变化,定位持续增长的类型;结合“Memory Traffic”观察短期对象分配频率,发现高频小对象创建问题。若发现如List实例不断增多,可在Compare视图确认增量后,右键选择“Show Instances in Incoming Graph”,查出被静态集合长期持有等泄漏根源。掌握捕获时机与引用分析逻辑,即可高效诊断内存泄漏等问题。

使用 dotMemory 分析 .NET 应用内存使用,核心在于捕获内存快照并分析对象分配、引用关系和潜在泄漏。dotMemory 是 JetBrains 推出的专业内存分析工具,适用于诊断 .NET 和 .NET Core 应用的内存问题。
启动分析:附加到进程或独立运行
打开 ReSharper 或独立的 dotMemory 应用,选择要分析的目标:
- 附加到正在运行的进程:在主界面点击“Attach to Process”,找到你的 .NET 应用程序进程,点击“Attach”。dotMemory 会注入探针,开始监控内存。
- 启动新应用进行分析:使用“Run application under dotMemory”功能,选择可执行文件路径,配置启动参数后运行。这种方式适合从启动阶段就开始监控。
捕获内存快照
在应用运行过程中,关键操作前后手动触发快照,便于对比:
- 点击“Get Snapshot”按钮,dotMemory 会暂停应用短暂时间,收集当前托管堆中所有对象的信息。
- 建议在以下场景拍摄快照:
- 应用启动后(基线)
- 执行某功能前与后(如打开窗口、加载数据)
- 怀疑内存泄漏的操作之后
分析快照:查找内存问题
进入快照详情页,重点关注以下几个视图:
系统优势: 1、 使用全新ASP.Net+c#和三层结构开发. 2、 可生成各类静态页面(html,htm,shtm,shtml和.aspx) 3、 管理后台风格模板自由选择,界面精美 4、 风格模板每月更新多套,还可按需定制 5、 独具的缓存技术加快网页浏览速度 6、 智能销售统计,图表分析 7、 集成国内各大统计系统 8、 多国语言支持,内置简体繁体和英语 9、 UTF-8编码,可使用于全球
- Objects by Size:查看占用内存最多的类型,识别大对象或异常增长的集合。
- Dominant Path:分析对象为何未被回收。选中某个类型,查看其“Incoming References”和“Dominators”,找出阻止 GC 回收的根引用链。
- Compare Snapshots:对比两个快照间的对象数量变化。如果某些类型实例数持续上升且不下降,可能是内存泄漏信号。
- Memory Traffic:观察短期对象的分配情况,帮助发现频繁创建的小对象(如字符串拼接、装箱)。
定位常见问题示例
比如发现 List
- 在 Compare 视图中确认其增量。
- 右键该类型,选择“Show Instances in Incoming Graph”,查看谁引用了这些列表。
- 若发现它们被静态集合持有且从未清理,就找到了泄漏点。
基本上就这些。掌握快照时机和引用分析逻辑,就能高效排查 .NET 应用的内存问题。不复杂但容易忽略细节。









