64 位 linux 上的 Java 线程堆栈大小

Gau*_*rav 3 java linux multithreading jvm stack-size

我的目标是提出可以并行运行的最大线程数。谷歌向我指出了许多链接,他们通过划分 RAM/StackSize 给出了简单的数学计算。在 64 位 Linux 中,我们将线程堆栈大小定义为 10 MB(ulimit -s = 10240kb),RAM 为 4GB,为 OS 留出 1 GB,按照这个数学计算我可以有大约 300 个线程,但是我的小型测试应用程序写到 ~32297 然后给出内存不足错误。

我用 -Xss 尝试了不同的值,但这些值对线程数几乎没有任何影响,它仍然与 ~32297 相同)。

这给我的印象是堆栈大小是可变的,由操作系统决定,并在需要时达到我们定义的最大值,但无论我在哪里阅读,它们的大小堆栈大小都是静态的

我到底错过了什么?

Ank*_*pta 5

尝试使用检查/更改 linux 最大堆栈大小

ulimit -s
Run Code Online (Sandbox Code Playgroud)

还要检查linux线程限制

cat /proc/sys/kernel/threads-max  
Run Code Online (Sandbox Code Playgroud)