根据一些博客文章和stackoverflow问题,我得出了以下结论:
- Java应用程序中可能的最大线程数取决于操作系统限制,而不是堆栈大小(xss)。Source
- 此外,根据这个SO question max的许多答案,可能的线程可以取决于许多因素-
- 操作系统和CPU架构
*堆大小
我还没有考虑堆大小对应用程序可以创建的线程数的影响,就像SO问题中的答案所建议的那样。
是否有一个简单的jvm属性,允许我配置最大内存,可以用于创建新线程?我不认为我可以证明增加-Xmx或任何其他内存部分没有明确专用于线程创建增加线程的数量在我的应用程序,但我似乎找不到这样的jvm属性。
JVM是openjdk 8(hotspot)1.8。
1条答案
按热度按时间ztigrdn81#
在OpenJDK 8中,没有直接的JVM属性来配置max。内存专门用于创建线程。用于线程堆栈的内存是进程的本机内存的一部分,而进程可以使用的总本机内存由操作系统管理。
所以你对
-Xmx
参数的看法是正确的--它控制最大堆大小,但不影响可用于线程创建的本机内存。重要的一点是,如果你的应用程序使用较少的堆内存,* 更多的本机内存可以用于线程创建 *,假设系统的总内存是固定的-也许这是你可以尝试的。所以,这里没有一个直接的JVM属性来控制用于线程创建的总内存。