关于pthread_attr_setstacksize 的手册页
A thread's stack size is fixed at the time of thread creation. Only the main thread can dynamically grow its stack.
我对linux线程的理解是,主线程堆栈的大小仅限于主线程创建上的ulimit -s值。虽然它可以根据堆栈使用的需要映射到virt,但其大小不再增长。
动态增长在这里意味着什么?这是否意味着主线程堆栈的大小可以超过ulimit -s
我在linux机器上,试图运行一个启动java应用程序的shell脚本。它昨天运行得很好,但是今天我得到了这个错误:
Error occurred during initialization of VM
java.lang.OutOfMemoryError: unable to create new native thread
at java.lang.Thread.start0(Native Method)
at java.lang.Thread.start(Thread.java:714)
at java.lang.ref.Reference.<clinit&
最近,我遇到了一个EAGAIN错误,其中包含了一些异步代码,这让我更仔细地了解了ulimit设置。虽然我清楚地理解某些限制,例如nofile,但其他限制仍然让我感到困惑。
很容易找到关于如何设置这些设置的资源,但是我没有找到任何一篇文章,精确地解释了每个设置是关于什么以及如何影响系统的。
摘自/etc/security/limits.conf的定义并不是完全可以解释的:
- core - limits the core file size (KB)
- data - max data size (KB)
- fsize - maximum filesize (KB)
- memlock - m