【发布时间】:2011-03-06 22:04:21
【问题描述】:
所以我使用了一个 StreamReader,它使用 MemoryStream 写入 StreamWriter 和此应用程序内部,但内存使用量增加了 300mb(来自较大的输入之一),并且在我完成使用后不会取消分配:
StreamWriter log = new StreamWriter("tempFile.txt");
log.Write(reader.ReadToEnd());
log.Close();
reader.DiscardBufferedData();
reader.Close();
reader.Dispose();
memoryStream.Dispose();
log.Dispose();
GC.Collect();
在此之前和之后,我得到了 RAM 使用量,之前它比之后少 300 mb,但我不知道为什么。考虑到这里唯一发生的事情是来自阅读器的数据被放置在文本文件中,我已经做了我能想到的一切来释放该内存我不明白为什么甚至需要使用任何大量内存暂时地。有什么我遗漏的吗?...谢谢。
【问题讨论】:
-
我建议在您的应用程序上运行性能分析器。您可能会发现您遇到的性能问题实际上与报告的内存占用无关。根据您写入磁盘的数据量,影响其他进程的更大罪魁祸首可能是磁盘 I/O 资源的争用。内存真的不应该成为性能问题(就对其他进程的影响而言),直到您实际溢出物理 RAM 并导致大量磁盘分页。
标签: c# memory-management streamreader memorystream streamwriter