Java虚拟机最多可以维护多少个线程?
我没有在我原来的问题中解释这一点,但我正在尝试对 JVM 进行基准测试,并想看看它可以同时维护多少线程。
在一个循环中创建线程直到抛出异常是一种选择,但是,我想知道是否有更好的方法来做到这一点。
原文由 Craig Locke 发布,翻译遵循 CC BY-SA 4.0 许可协议
Java虚拟机最多可以维护多少个线程?
我没有在我原来的问题中解释这一点,但我正在尝试对 JVM 进行基准测试,并想看看它可以同时维护多少线程。
在一个循环中创建线程直到抛出异常是一种选择,但是,我想知道是否有更好的方法来做到这一点。
原文由 Craig Locke 发布,翻译遵循 CC BY-SA 4.0 许可协议
您的操作系统和硬件配置会有一些限制。
要增加并发线程数,您应该降低默认堆栈大小 java -Xss 64k
。
ulimit -a
将为您提供针对用户进程和内存的配置限制cat /proc/sys/kernel/pid_max
最多 32k 个进程。cat /proc/sys/kernel/threads-max
原文由 flob 发布,翻译遵循 CC BY-SA 3.0 许可协议
8 回答6.8k 阅读
4 回答1k 阅读✓ 已解决
1 回答2.4k 阅读✓ 已解决
1 回答1.1k 阅读✓ 已解决
2 回答647 阅读✓ 已解决
2 回答1.2k 阅读
2 回答1.5k 阅读
编写一个创建新线程直到它崩溃的循环是找出问题的最终方法。您可能会看到性能在它真正消失之前就已经严重下降。
我不知道 JVM 中是否有任何配置参数或其他内置限制。我在实践中从未遇到过限制。当然迟早你会耗尽内存,也许是其他资源。
我怀疑线程数量本身没有限制,而是与线程关联的资源有限制。也就是说,如果所有线程都只运行一个小类,每个线程只有几个字节的数据,您可能会看到您可以拥有 10,000 个线程,但是当它们每个都有 1000 万个字符串的数组时,这个数字会迅速下降。