如何衡量流程的堆栈大小?

res*_*way 6 linux

如何找到进程的堆栈大小?/ proc/5848/status给了我VmStk,但这并没有改变

无论我在测试程序中执行的循环和递归有多少,这个值几乎没有变化.

当我查看/ proc/pid/status时,所有进程都有136k,并且不知道该值来自何处.

谢谢,

Dav*_*rtz 5

在 Linux 上确实没有“进程的堆栈大小”这样的东西。进程有一个起始堆栈,但正如您所见,它们很少从标准堆栈中分配太多内容。相反,进程只是从操作系统分配通用内存并将其用作堆栈。所以操作系统没有办法知道——这个细节只能从进程内部看到。

典型的现代操作系统可能具有操作系统强加的 8MB 堆栈大小限制。然而,进程通常会在其堆栈上分配更大的对象。这是因为应用程序正在使用一个纯粹由应用程序管理的堆栈,而不是就操作系统而言的堆栈。

这对于多线程进程总是正确的。对于单线程进程,它们实际上可能只使用非常非常少的堆栈。