只是想知道进程何时启动,其堆栈要求是如何确定的,或者每个进程是否以默认堆栈大小启动并根据要求动态增长。
在我的系统上,堆栈大小的软限制为 10M
,硬限制为 unlimited
。这是否意味着堆栈可以增长到最大可用 RAM?
如果我的进程中有十几个线程,所有线程的堆栈大小都会不同(假设我没有设置堆栈属性)
最佳答案
每个进程都以最小大小的用户空间堆栈启动,该堆栈会根据需要自动扩展。
如果违反软限制,则进程将终止。该进程可以提高自己的软限制,但不能高于硬限制。
即使软限制是无限的,最大可用堆栈大小也受到进程地址空间中其他映射的限制,因为它必须是连续的。
关于linux - 内核如何决定堆栈大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13425379/