2014-03-27 72 views
-2

只是試圖瞭解dot net中的內存不足異常。用於無限循環的c#中的內存不足異常

如果我創建一個無限循環並在循環中創建一個新對象,並且該對象將某些內容寫入文件。

此應用程序是否會耗盡內存?這會導致內存異常嗎?

+2

爲什麼不你試試嗎? – zerkms

+1

是的。寫入文件雖然與此無關.. – bit

+1

它取決於對象的大小,並且大多數GC會收集對象。所以只要在while循環中做一些事情並寫入文件就不會導致內存不足異常。 – Venki

回答

1

每當應用程序嘗試並且未能分配內存來執行操作時,都會引發OutOfMemoryException。根據Microsoft's documentation,下列操作可以潛在地拋出一個OutOfMemoryException:

  • 拳擊(即,在對象包裝值類型)
  • 創建陣列
  • 創建對象

如果您嘗試創建無限數量的對象,那麼假設您遲早會耗盡內存是相當合理的。

注:不要忘了garbage collector根據對象的生命期正在創建,它會刪除其中的一些,如果它決定他們不再使用。)