我們對在特定計算機上遭受OutOfMemoryExceptions的NUnit測試進行了測試。運行測試時特定計算機上的OutOfMemoryException
調查後,似乎它不是一個內存問題,但處理問題(我們分配太多的位圖對象,而不是釋放它們)。
問題是,它在特定機器上完美運行,而在另一臺機器上出現此錯誤時失敗。
- 未按機在Hyper-V虛擬機使用的Windows7 64位(6 GB RAM)
- 工作機是一個物理機的Windows XP(2 GB RAM)
我知道,最好的解決辦法將清理處理任何Bitmap對象的代碼,但我有興趣知道爲什麼這兩臺機器在執行相同代碼時行爲不同?
那麼,.NET框架可能是相同的,但底層操作系統不是。像位圖這樣的資源仍然由操作系統來處理。 Windows 7處理資源的方式與Windows XP不同,因此在不同版本的Windows上獲得不同的結果並不奇怪。 – helb
在Windows拒絕發佈之前可以泄漏的句柄數量是可配置的。也許其中一臺機器配置不同。 –
謝謝@eric。你知道這可以從哪裏控制嗎? –