Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中创建最大线程的因素是什么,堆大小和最大线程数成反比吗?_Java_Multithreading - Fatal编程技术网

在java中创建最大线程的因素是什么,堆大小和最大线程数成反比吗?

在java中创建最大线程的因素是什么,堆大小和最大线程数成反比吗?,java,multithreading,Java,Multithreading,我已经创建了一个程序来检查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 ru

我已经创建了一个程序来检查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();
    }
}
    }
第一次迭代-Xmx1024m,最大线程=2011>第二次迭代-Xmx512m,最大线程=3350>第三次迭代-Xmx2m,最大线程=5112

我还尝试了设置-Xss1m,max-thread=1011,然后设置了-Xss256k-max-thread 4900+

我有两个问题
1) java中堆栈和堆大小的关系是什么?

2) java中最大线程数取决于什么因素?

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


如果您运行的是64位JVM,此限制将被取消,并且您可以拥有非常大的堆(例如1 TB),并且仍然不限制可以拥有的线程数。注意:在Linux上,Java似乎被限制为大约32K个线程。我不建议您在任何情况下使用类似于此的数字,您应该尽量将其保持在几千以内。

这有帮助吗@vishal_aim这是一个非常有用的问题/答案,值得一读,但它没有解释为什么堆越小,线程就越多。纠正Peter,这就是我发布它的原因,我需要知道为什么在Linux上
,即使对于64位JVM,Java似乎也被限制在大约32K个线程上
?我不确定限制是什么,但我看到一个64位JVM在RHEL/Centos上无法创建超过32000个线程(在一台拥有大量资源和非常高ulimit的机器上)
May be the answer is  in 
java.lang.Runtime class
java.lang.management package
java.lang.instrument package
If you can see it in depth.