可在32位计算机中用Java创建的线程数
我正在阅读下面的一段内容,关于32位机器中可以用Java创建的线程数量,我有点不知所措: 在32位机器上,一个主要的限制因素是 线程堆栈。每个线程维护两个执行堆栈,一个用于 Java代码,一个用于本机代码。典型的JVM默认值会产生 组合堆栈大小约为半兆字节。(你可以改变这个 使用-Xss JVM标志或通过线程构造函数。)如果 将每个线程的堆栈大小划分为232,得到一个 限制几千或上万个线程。 其他因素,如操作系统限制,可能会施加更严格的限制 这是什么意思?232号码是从哪里来的?如果Thread类中没有将堆栈大小作为参数的构造函数,我如何更改线程构造函数中的堆栈大小可在32位计算机中用Java创建的线程数,java,multithreading,concurrency,Java,Multithreading,Concurrency,我正在阅读下面的一段内容,关于32位机器中可以用Java创建的线程数量,我有点不知所措: 在32位机器上,一个主要的限制因素是 线程堆栈。每个线程维护两个执行堆栈,一个用于 Java代码,一个用于本机代码。典型的JVM默认值会产生 组合堆栈大小约为半兆字节。(你可以改变这个 使用-Xss JVM标志或通过线程构造函数。)如果 将每个线程的堆栈大小划分为232,得到一个 限制几千或上万个线程。 其他因素,如操作系统限制,可能会施加更严格的限制 这是什么意思?232号码是从哪里来的?如果Thread
2^32
是虚拟地址空间的大小请注意,根据定义,232是理论极限。在实践中,如果OS使3/4的可用性达到32位进程,您可能会认为自己是幸运的。 2 ^ 32值是可用的虚拟地址空间的大小。实际上,您所谈论的232个是2 ^ 32。你现在还有问题吗?我的天啊,在我的pdf文件中,它读作232,谢谢你纠正了这个错误!:)那一段的语法似乎有误。我同意这样的解释,即“如果你将理论上最大的地址空间除以最小的堆栈大小,那么……”(但从技术上讲,当你考虑段时,这是不正确的)。然而,无论如何,拥有这么多线程是个坏主意。