-1
想知道什么时候进程开始如何确定堆栈需求,或每个进程是否以默认堆栈大小开始,并根据需求动态增长。
在我的系统上,堆栈大小的软限制为10M
,硬限制为unlimited
。这是否意味着堆栈可以增长到最大可用RAM?
如果我在我的过程中十个线程,将堆叠中的所有不同(假设我没有设置堆栈属性)内核如何决定堆栈大小
想知道什么时候进程开始如何确定堆栈需求,或每个进程是否以默认堆栈大小开始,并根据需求动态增长。
在我的系统上,堆栈大小的软限制为10M
,硬限制为unlimited
。这是否意味着堆栈可以增长到最大可用RAM?
如果我在我的过程中十个线程,将堆叠中的所有不同(假设我没有设置堆栈属性)内核如何决定堆栈大小
每个进程都始于一个最小尺寸的用户空间堆栈,它会自动扩展为规模需要。
如果软限制被违反,那么该进程将被终止。这个过程可能会提高自己的软限制,但不会高于硬限制。
即使软限制是无限的,最大可用堆栈大小也会受到进程地址空间中其他映射的限制,因为它必须是连续的。
恕我直言'人rlimit'给出了所有的答案。 – wildplasser
@wildplasser恕我直言,你还没有明白我在问什么 –
内核不会决定线程的堆栈大小。 'pthread_create'函数确实设置了每个线程的堆栈。 –