2012-12-16 23 views
2

我想要創建多個FileStreams,並且需要保持它們打開 - 將不會有I/O操作。內存消耗是多少?如果我創建大量這樣的流,這會影響系統性能嗎?由空閒文件流消耗的內存

+2

爲什麼你需要有ope文件流如果你沒有對它們做任何事情? –

+0

@Eugene只是問我需要處理多文件I/O有些可能不需要,但需要保持開放 – phoenix

回答

0

簡而言之:打開文件流並不是一個好主意,因爲它是未受管理的資源。

在.NET框架體系結構中,如果在代碼中沒有正確管理,所有未管理的資源都會導致內存大量泄漏。

如果你在說 - 「我不想讓它超出範圍,那麼垃圾收集器最終會調用Dispose,殺死流,但我想保持流打開。」

垃圾收集器將調用Finalize方法(析構函數),而不是Dispose方法。終結器將調用Dispose(false)這將而不是配置基礎流。如果您需要直接使用基礎流,您應該保持StreamReader超出範圍。只要確保在適當的時候手動處理基礎流。

+0

我打算什麼都不做,只需要保持一些文件流打開,但其他進程可能會讀取文件 – phoenix

+0

在這種情況下,它不是內存泄漏,而是文件句柄。 –

+0

文件處理程序?你能否詳細說明 – phoenix