我有一個運行在大量XPS文檔(數千個)上的WinForms .Net應用程序,在此運行期間,每個文檔的句柄數量(根據sysinternals進程監視器和任務管理器)將增加3-10。我非常懷疑這些是由MS .Net XPS框架庫打開並未關閉的句柄,但我無法追蹤它。如何找到我的.Net應用程序在Windows應用程序中泄漏的位置?
儘管單步執行代碼,在同一次運行過程中,處理計數會在不同點增加。例如,一次循環和句柄計數將在一行上跳1,下次可能不跳,或者它可能跳2。所以我懷疑XPS com組件有句柄泄漏。
雖然內存使用情況良好,但如果我一直用盡這種手柄,那麼我會崩潰的應用程序,也許桌面。
到目前爲止,我已經嘗試sysinternals進程資源管理器來查看句柄,但它們都被標記爲沒有更多的細節。還使用了sysinternals的handle.exe,這並不顯示快照之前,之間和之後的任何顯着不同。
任何關於如何追蹤手柄的線索?我想我將不得不簡化爲單個線程控制檯應用程序來測試。
問候
瑞安
是的,正如我所說的,內存使用現在可以了(在COM XPS調用中泄漏有很多問題),所以我認爲這種配置不是問題。我非常懷疑XPS的東西,但我還不能證明它。 – 2008-10-23 21:03:27
Dispose並不真正處理內存 - 它更多的是釋放非託管資源(句柄)。我不是說它*是*,但它值得檢查。 – 2008-10-24 06:32:06
+1 - 使用FxCop幫助檢測可能無法處理的地方。 – Joe 2008-10-24 06:48:54