dotMemory 是一个 .NET 内存分析器,可以直接从 Visual Studio 启动,既可以作为 JetBrains Rider 的插件使用,也可以作为独立工具使用。
使用 dotMemory,您可以分析基于任何受支持版本的 .NET Framework、.NET Core、.NET、ASP.NET Web 应用程序、IIS、IIS Express、Windows 服务、通用 Windows 平台应用程序等的应用程序。 On macOS and Linux, dotMemory can be used only as part of JetBrains Rider or as a command-line profiler.
dotMemory 允许您导入使用任务管理器或进程资源管理器获取的原始 Windows 内存转储,并将它们作为常规内存快照进行分析。 这样,您可以充分利用自动检查、保留图和其他复杂的 dotMemory 功能。
了解内存如何在应用程序中保留对于成功优化内存至关重要。 在此视图中,支配项(在内存中专门保留其他对象的 对象)的层次结构显示在旭日图上。
只需快速查看图表,就可以找出哪些对象对您的应用程序至关重要,并评估最大的结构:支配项保留的内存越多,中心角越大。
要获取特定支配项的保留路径,请点击相应的弧。 双击支配项将放大图表,允许您更详细地查看此支配项保留的对象。
dotMemory 与 JetBrains Rider 集成,允许您进行实时内存分配跟踪、指定时间间隔的分配分析,等等。 需要时,您可以直接从 Visual Studio 启动内存分析会话。
稍后,您可以从 dotMemory 对象集中的某个类型导航到 Visual Studio 中的类型声明。
有时,您可能只有当某个条件成立时才有兴趣抓取快照。 因此,dotMemory 可以自动完成抓取快照的过程。 当应用程序的内存消耗大幅增加,或手动抓取快照变得棘手时,这尤其有用。 只需设置特定条件,并在满足条件后自动收集快照。
监控应用程序消耗的内存,获取快照并一键进行比较。
虽然内存分析一直以来都只是专业人士的地盘,但 dotMemory 独特的用户界面大大降低了这项工作的门槛,使内存分析变得简单明了。 您只需从上到下,从一组对象向下移动到特定实例,直到找出内存问题的真正原因。
过多分配和垃圾回收可能意味着显著的内存管理开销。 使用流量视图可以了解在应用程序中最频繁创建/收集的对象,以及导致此内存流量的函数。
dotMemory 可以自动扫描快照,查找有无常见类型的内存问题,例如,字符串重复、稀疏数组、泄漏事件处理程序或 WPF 绑定。 如果您不知道从哪里开始,这些检查可以成为分析快照的良好起点。
dotMemory 绑定了 dotMemory.exe 命令行分析器。 使用此工具自动完成分析:使分析成为持续集成生成的一部分,或者简单地加速分析例程(例如,如果您必须定期分析相同的应用程序,并且不希望每次都启动 dotMemory 用户界面)。