gpt4 book ai didi

java - 在java中创建最大线程的因素是什么,堆大小是否与线程的最大数量成反比?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:30:57 25 4
gpt4 key购买 nike

我创建了一个程序来检查 java 中的最大线程数

public class Test extends Thread {
static int count;

public static void main (String [] args){
for(;;){
count++;
System.out.println(count);
new Test().start();
}
}



@Override
public void run() {
try {
Thread.sleep(100000000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

First iteration -Xmx1024m ,max thread = 2011 > Second iteration -Xmx512m ,max thread = 3350 > third iteration -Xmx2m ,max thread = 5112

I have also tried with setting -Xss1m ,max thread = 1011, then I have set -Xss256k max thread 4900+

我有两个问题
1)java中栈和堆的大小有什么关系?
2)java中最大线程数取决于什么因素?

最佳答案

如果您在 32 位 VM 上运行,则虚拟内存空间有限。在 32 位 Windows JVM 上,它可以小到 1.5 GB。每个线程都需要堆栈空间,因此堆后的可用空间越多,您可以拥有的线程就越多。在 32 位 Unix 上,您最多可以拥有 3.5 GB 的虚拟内存,但限制仍然存在。

如果你运行的是 64 位 JVM,这个限制就会被解除,你可以有一个非常大的堆,例如1 TB,但仍然不限制您可以拥有的线程数。注意:在 Linux 上,Java 似乎限于大约 32K 线程。我不建议你在任何情况下都使用这样的数字,你应该尽量保持在几千以内。

关于java - 在java中创建最大线程的因素是什么,堆大小是否与线程的最大数量成反比?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14020293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com