单个Windows线程的内存开销是多少?

每个线程的堆栈是1 Mb吗? 或者只是CLR线程?

我想通过任务管理器了解本机Windows线程(c ++)和CLR线程作为视图的内存。

谢谢

本机和CLR线程的默认值均为1 MB。 你可以改变它,虽然这通常是一个坏主意。

有关win32内核限制的信息 ,请参阅Mark Russinovich博客,了解单个线程的大小以及使用的开销。

.NET线程使用了多少资源可能很难预测。 我想,不多了。

内存开销(在RAM中)将是一个内存页面。 所以(取决于你的平台)这可能是4KB。

两者的默认堆栈大小均为1MB。 但是,这只是虚拟内存,因此除非使用它,否则不会产生RAM开销。

根据之前的答案,每个线程的基本开销为1MB。 我不会介绍各种细微差别 – 其他答案都涵盖了它们。

对于Microsoft Visual C / C ++线程,您还具有按需分配(并使用线程本地存储TlsAlloc()存储)以执行诸如sprintf(),scanf(),strtol等工作的任何C运行时工作空间的每线程开销。 ()等。我没有任何确切的数字 – 您需要扫描源到Microsoft CRT来计算。

对于其他C / C ++运行时(gcc / g ++ / borland / digital mars),可能存在也可能不存在类似的每线程数据,这是一个实现细节。

我们都不知道.Net执行引擎的内部结构,但也可能存在一些每线程数据。 虽然很难弄明白这是什么开销。