每个线程的堆栈是1 Mb吗?或者只是CLR线程?
我想通过任务管理器知道本机Windows线程(c ++)和CLR线程的内存是否为视图。
由于
答案 0 :(得分:6)
答案 1 :(得分:3)
请参阅Mark Russinovich关于win32内核limits的博客,了解单个线程有多大,以及使用了多少开销。
.NET线程使用多少资源很难预测。我想,不多了。
答案 2 :(得分:1)
内存开销(在RAM中)将是一个内存页面。所以(取决于你的平台)这可能是4KB。
两者的默认堆栈大小为1MB。但是,这只是虚拟内存,因此除非使用它,否则不会产生RAM开销。
答案 3 :(得分:1)
根据之前的答案,每个线程的基本开销是1MB。我不会讨论各种细微差别 - 其他答案都包括在内。
对于Microsoft Visual C / C ++线程,您还具有按需分配(并使用线程本地存储TlsAlloc()存储)以执行sprintf(),scanf等工作的任何C运行时工作空间的每线程开销。 ),strtol()等我没有任何确切的数字 - 您需要扫描源到Microsoft CRT来计算。
对于其他C / C ++运行时(gcc / g ++ / borland / digital mars),可能存在也可能不存在类似的每线程数据,这是一个实现细节。
我们都不知道.Net执行引擎的内部结构,但也可能存在一些每线程数据。虽然很难弄清楚开销是多少。