分析内存使用率工具中根的热路径
在 Visual Studio 的内存使用率分析工具中分析 .NET 代码时,根的热路径可以帮助你识别堆上保留的导致内存使用问题的对象。 在内存使用的语境中,热路径 是由探查器标识的一条引用链,它指向一个可能导致内存问题的根对象。
计算对象的非独占大小(通过保持对象的活动状态而保留在堆上的内存总量)时,将强连接堆图简化为树通常会很有帮助。 与图形不同,树中的节点具有任意数量的子级,但只有单个父级。 通常,使用各种探索方法选择根的最可能路径足以找到引用链,而无需考虑对象根的每个可能路径,如果删除该引用链,对象将符合垃圾回收的条件。 其中一些探索方法包括优先尝试根的最短路径、特定根类型和用户代码路径。 出于各种原因,此方法并非一定能找到最相关或存在时间最长的保留链,但它在内存使用率调查中通常是一个很好的开始。
在内存使用工具的 到根路径的 树中,带有火焰图标的路径()称为到根路径的热路径。
例
使用“仅显示热路径”选项来筛选“根的路径”窗格中的视图。
在此示例中,有一个 WPF 控件 (AttachToProcess.Dialog
) 通过绑定泄露,该绑定最终通过 AutomationPeer
成为根。 在筛选视图中,保留路径十分明显,只有通向根的直接路径可见。
禁用该选项后,很明显有数百个绑定,并且大多数扩展路径都会导致死循环。 如果没有视觉指示器,从数千条潜在的保留路径中排序以查找泄漏的可能原因是很繁琐的。
另请参阅
有关 Visual Studio 内存使用情况工具的详细信息,请参阅