2016-01-20 61 views
-1

問題:MSTest的內存溢出的異常

最近,我開始面對我的項目中包含大約650單元測試的一個問題。

當我一次運行所有這些測試時,單元測試運行結束時的一些測試開始失敗,出現System.OutOfMemoryException

當我再次運行失敗的測試時,它們會通過。

分析:

我看了看任務管理器運行我的測試,同時要看到,vstest.executionengine.x86.exe一直增加,直到達到1330 MB的內存。然後,由於內存不足異常,測試開始失敗。

當然可以肯定的是,我的一些類可能會有內存泄漏,但我測試的類中有90%沒有可能導致內存泄漏的代碼。

我的許多測試類的沒有任何TestInitializeTestCleanup方法,因爲我的課的創建直接完成TestMethod測試內部,因爲在測試這些類沒有實現IDiposable(因爲沒有代碼,可以導致泄漏)。

問題:

現在我不知道我可能是做錯了。但是我想知道即使在測試類的所有測試都運行之後,測試對象仍然保留在內存中嗎?

有沒有人遇到過這個問題,或者可以指點我應該/可以做些什麼來修復或找到問題?

謝謝!

回答

1

參考dotMemory Unit從您的測試項目框架,並添加以下代碼的最後OOM發生之前運行的測試(或接近OOM的地方)。

dotMemoryApi.GetSnapshot(); 
dotMemoryApi.SaveCollectedData(); 

然後打開該快照與dotMemory探查和尋找什麼浪費內存。 也看大對象堆,它可能有你的碎片問題。