Unix / Linux线程的默认内存块?

时间:2011-07-04 20:23:09

标签: windows linux multithreading unix memory

有人知道在Unix / Linux操作系统上创建的线程分配了多少默认内存? 对于Windows xp OS,我发现它分配了一个1MB的内存块,这是正确的吗?

提前致谢。

2 个答案:

答案 0 :(得分:1)

这个问题没有一个答案。

事实上,Windows上甚至没有一个答案。不同的可执行文件指定不同的堆栈限即使在单个进程中,单个线程也可能具有不同的堆栈限制。

当您考虑.net和本机可执行文件之间的差异时,它会变得更加复杂。相当奇怪的.net可执行文件在线程启动后立即为每个线程提交整个堆栈分配。另一方面,本机可执行文件保留堆栈分配,然后使用保护页面按需提交内存。

答案 1 :(得分:0)

您可以使用ulimit -s查看为线程堆栈分配的空间量(以千字节为单位)。

引用pthread_create(3) manpage

  

在Linux / x86-32上,默认堆栈   新线程的大小是2兆字节。   在NPTL线程下   实现,如果是RLIMIT_STACK   当时的软资源限制   程序启动有其他任何价值   比“无限”,它决定了   新线程的默认堆栈大小。   使用pthread_attr_setstacksize(3),   堆栈大小属性可以是   在attr参数中显式设置   用来创建一个线程,以便   获得除了之外的堆栈大小   默认值。