2012-12-16 22 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