我想创建多个 FileStreams
并且需要让它们保持打开状态 - 不会有 I/O 操作。内存消耗是多少?如果我创建大量此类流,这会影响系统性能吗?
最佳答案
简而言之:保持文件流打开不是一个好主意,因为它是非托管资源。
在 .NET Framework 架构中,如果未在代码中正确管理,所有非托管资源都会导致内存大泄漏。
如果你说 - “我不想让它超出范围。然后垃圾收集器最终会调用 Dispose,终止流。但我想保持流打开。”
垃圾收集器将调用Finalize
方法(析构函数),而不是Dispose
方法。终结器将调用 Dispose(false)
,这将不释放底层流。如果您需要直接使用底层流,则让 StreamReader
超出范围应该没问题。只需确保在适当的时候手动处理底层流即可。
关于c# - 空闲文件流消耗的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13902369/