4

我正在尝试减少我拥有的控制台应用程序的内存使用量。它应该连续运行几个小时,但似乎内存使用量每秒都在逐渐增加。它确实使用了多个线程,并且做了很多事情,但我在某处读到,对 Console.WriteLine 进行大量调用也会导致内存峰值。

因为应用程序一直在向控制台写入数据,所以我认为内存使用量可能是因为这个。不幸的是,我无法轻松清除控制台,因为我将输出重定向到监视窗口。我暂时关闭了它,但内存仍在增加,这告诉我还有其他事情需要解决。

在我开始寻找内存泄漏之前,我想知道是否有人可以确认/验证拥有数千个 Console.WriteLine 是否会导致内存泄漏,或者重定向输出缓冲区是否已经正确处理了这种情况。我试图进行搜索,但没有找到太多关于此的内容。

4

1 回答 1

4

有数千次调用Console.WriteLine不会导致内存泄漏。我有一个长时间运行的程序(现在已经运行了 6 个月),它每分钟向控制台写入几百行,并且它的内存使用量保持不变。

一次不频繁地写入数千行可能会由于临时字符串而导致内存峰值,但这些将在下次运行 GC 时收集。但是稳定的负载Console.WriteLine只会导致未收集的字符串的稳定内存负载。它不会一直增加。

于 2012-07-24T21:50:15.757 回答