C# Console.WriteLine和内存泄漏

C# Console.WriteLine和内存泄漏,c#,memory-leaks,console,console.writeline,C#,Memory Leaks,Console,Console.writeline,我正试图减少我拥有的控制台应用程序的内存使用。它应该连续运行数小时,但似乎内存的使用量每秒钟都在逐渐增加。它确实使用多个线程,并执行多种操作,但我在某处读到,对Console.WriteLine进行大量调用也会导致内存峰值 因为应用程序不断地向控制台写入数据,所以我认为内存使用可能就是因为这个原因。不幸的是,我无法轻松清除控制台,因为我正在将输出重定向到监视窗口。我暂时关闭了它,但内存仍在增加,这告诉我还有其他事情需要解决 在我开始查找内存泄漏之前,我想知道是否有人可以确认/验证是否有数千个Co

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

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


在我开始查找内存泄漏之前,我想知道是否有人可以确认/验证是否有数千个Console.WriteLine会导致内存泄漏,或者重定向输出缓冲区是否已经正确处理了这一问题。我尝试过搜索,但没有找到太多相关信息。

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


不经常同时写入数千行可能会由于临时字符串而导致内存峰值,但这些将在下次运行GC时收集。但是持续加载Console.WriteLine只会导致未收集字符串的持续内存加载。它不会不断增加。

是什么让你认为你看到的是泄漏?内存使用可能会增加,直到有足够的压力来保证收集;根据您的代码及其运行环境,这可能需要很长时间。每秒有多少内存泄漏,应用程序在做什么
Console.WriteLine
不应该消耗比消息在缓冲区中占用的内存更多的内存,除非我遗漏了什么……事实上,这并不总是正确的。虽然Console.WriteLine是线程安全的,但如果您从多个线程调用它,则会出现句柄泄漏,其他线程上的事件/信号量将无法关闭。我已经在Win2003.NET4中验证了这一点。我还没有尝试过其他平台。