共用方式為


在記憶體使用量工具中分析根目錄的熱門路徑

在 Visual Studio 中分析 記憶體使用量 分析工具中的 .NET 程式代碼時, 的熱門路徑可協助您識別堆積上保留的物件,而造成記憶體使用量問題。 在記憶體使用的情境中,熱點路徑 是由分析器識別出的引用鏈結,該鏈結指向可能導致記憶體問題的根物件。

計算物件的總內含大小時(指藉由讓物件保持存在而保留在堆中的記憶體總量),將強連接堆中的圖形簡化為一棵樹通常會更有幫助。 與圖形不同,樹狀結構中的節點任意擁有許多子系,但只有單一父系。 與其考慮物件的每個可能根路徑,不如使用各種啟發式方法選擇最可能的根路徑,這通常足以找到參考鏈條,一旦移除,將使該物件符合垃圾回收的條件。 其中一些啟發式方法包括優先考慮最短的根路徑、特定類型的根路徑,以及使用者程式碼的路徑。 基於各種原因,此策略不一定會找到最有趣或最長存留期的保留鏈結,但通常會在記憶體使用量調查中提供有用的起點。

在記憶體使用量工具 樹狀目錄的 [路徑] 樹狀結構中,具有火焰圖示的路徑(顯示經常性路徑圖示的螢幕快照。) 稱為根路徑的熱路徑。

使用 [[僅顯示經常性路徑] 選項,即可篩選 [[路徑到根 目錄] 窗格中的檢視。

在此範例中,WPF 控件(AttachToProcess.Dialog)會因綁定洩露,而該綁定最終由 AutomationPeer所根植。 在篩選的檢視中,保留路徑很明顯;只有根目錄的直接路徑可見。

根參考路徑圖表的螢幕快照。僅顯示熱路徑的選項已被勾選,並突顯出線性的參考鏈結。

停用選項時,很明顯有數百個系結,而且大部分的擴充路徑都會導致該迴圈的死端。 如果沒有視覺指標,篩選數千個潛在的保留路徑以找出可能的洩漏原因會顯得非常繁瑣。 相同 [根路徑] 參考圖表的螢幕快照,但 [僅顯示熱門路徑] 的選項未勾選,因此可以看到許多可能的死端。

另請參閱

如需 Visual Studio 記憶體使用量工具的詳細資訊,請參閱