当线程堆栈使用的内存被释放时

时间:2013-02-04 06:50:44

标签: linux multithreading stack free

我正在观察mongoDB的连接。当一个新的连接生成时,我可以看到一个新的线程创建(pstack·pgrep monnod | grep -c Thread), and some new chunks memory allocated (get from /proc/ pgrep mongod` / maps),其中一个块是1024K,应该是新线程的堆栈大小,我看到了它在代码中设置为1024k。  当我退出这个会话时,线程数减少1,但内存仍然存在。当我生成一个新连接时,这些内存似乎重用。所以我猜应该是linux Kernel的行为。  如果我是对的,我可以知道吗?这个功能在哪里有详细记录?  谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

  

当我退出此会话时,线程数减少1,但内存仍然存在。当我生成一个新连接时,这些内存似乎重用。所以我猜应该是linux Kernel的行为。

这与内核无关。

GLIBC将mmap线程堆栈,并具有此类堆栈的缓存。代码为here