我在RHEL 6.3上运行了几个进程,但由于某种原因,它们超出了线程堆栈大小.
例如,Java进程在启动时在运行时被赋予-Xss256k的堆栈大小,并且在实际代码中使用pthread_attr_setstacksize()为C++进程提供1MB的线程堆栈大小.
但是出于某种原因,这些过程并没有坚持这些限制,我不确定为什么.
例如,当我跑
pmap -x <pid>
Run Code Online (Sandbox Code Playgroud)
对于C++和Java进程,我可以看到每个数百个'anon'线程(我已经确认这些线程是由这些进程中的每一个创建的内部工作线程),但是这些线程的分配值各为64MB,而不是限制集以上:
00007fa4fc000000 168 40 40 rw--- [ anon ]
00007fa4fc02a000 65368 0 0 ----- [ anon ]
00007fa500000000 168 40 40 rw--- [ anon ]
00007fa50002a000 65368 0 0 ----- [ anon ]
00007fa504000000 168 40 40 rw--- [ anon ]
00007fa50402a000 65368 0 0 ----- [ anon ]
00007fa508000000 168 40 40 rw--- [ anon ]
00007fa50802a000 65368 0 0 ----- [ anon ]
00007fa50c000000 168 40 40 rw--- [ anon …
Run Code Online (Sandbox Code Playgroud)