跟踪侦听器 - 创建内存溢出

时间:2009-07-06 09:16:29

标签: .net multithreading

我在多线程应用程序中使用tracelistener远程记录消息,但应用程序会造成内存溢出。

为了测试,我创建了10,000个线程,并尝试使用TraceData函数记录消息。

.Net框架是否为每次调用TraceData创建一个对象,这会导致内存溢出?

1 个答案:

答案 0 :(得分:4)

10,000个线程:每个线程将分配一个(默认)1MB堆栈空间。因此,它们将需要10GB RAM,这在32位进程中是不可能的(并且可能会破坏64位上的总可用RAM /页面)。

与追踪无关。

附加:关于Windows的线程(和进程)限制的新文章,Mark Russinovich。请注意最后一段。 “Pushing the Limits of Windows: Processes and Threads