我想跟蹤使用ANTS分析器的應用程序中的內存泄漏。我將其追蹤到垃圾收集器,在那裏我們有一個對象列表System.Transactions.SafeIUnknown,它們永遠坐在垃圾收集器中,處於終結器隊列中,但永遠不會被釋放。在.NET垃圾收集器與System.Transactions.SafeIUnknown內存泄漏
我可以在System.Transactions.SafeIUnknown找到不記錄什麼,也不能確定將會創建或引用它的內容,這對我們來說沒有任何意圖。
我希望有人對此有所瞭解。這是一個20字節的小漏洞,但是當我們的應用程序運行數天後,漏洞就會增加,我們有數百萬次這樣的等待結束,並且它開始吃掉很多很多的內存。
任何想法何去何從?
後續
我跟蹤它到正在使用某個庫。在我們通過這個特定的庫執行任何SQL語句之後,它似乎被留下了。 statemtements沒有包含在事務中,但是它們通過一個相當複雜的循環,泛型類型來執行,目前看起來像雙向間接方式,代表被傳遞給運動並封裝在可以封裝更多閉包的閉包中。 我會繼續嘗試將其嚴格控制下來,我的第一個停靠點是嘗試使用類似的機制來重現它。
非常感謝以前評論中提到的評論彼得,我會繼續調查,看看我可以去的地方。 – Bigtoe 2010-03-04 16:09:27
順便說一句,它是我使用的MS SQL數據提供程序。 – Bigtoe 2010-03-04 16:10:02