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