java虚拟机能并发的启动多少个线程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java虚拟机能并发的启动多少个线程相关的知识,希望对你有一定的参考价值。

新建一个类,导入如下的测试代码:

 1 public class TestNativeOutOfMemoryError {
 2     public static void main(String[] args) {
 3 
 4         for (int i = 0;; i++) {
 5             System.out.println("i = " + i);
 6             new Thread(new HoldThread()).start();
 7         }
 8     }
 9 
10 }
11 
12 class HoldThread extends Thread {
13     CountDownLatch cdl = new CountDownLatch(1);
14 
15     public HoldThread() {
16         this.setDaemon(true);
17     }
18 
19     public void run() {
20         try {
21             cdl.await();
22         } catch (InterruptedException e) {
23         }
24     }
25 }

在我的开发环境上运行结果如下:

1 ......
2 i = 3935
3 Exception in thread "main" java.lang.OutOfMemoryError: unable to create new native thread
4     at java.lang.Thread.start0(Native Method)
5     at java.lang.Thread.start(Thread.java:714)
6     at com.study.thinking.in.java.concurrent.TestNativeOutOfMemoryError.main(TestNativeOutOfMemoryError.java:15)

每次运行结果并不完全一致,但是大差不差。

影响结果的几个参数:

1. 物理内存
使用64位OS能给虚拟机分配更大内存
2.JVMMemory 减少这项参数能增加并发的线程数,非倍数关系 -Xms1024m -Xmx1024m并不能比-Xms512m -Xmx512m多一倍的线程
3.ThreadStackSize 减少单个线程的栈大小,在有效范围内,是倍数关系

 

更多消息参考:http://sesame.iteye.com/blog/622670

以上是关于java虚拟机能并发的启动多少个线程的主要内容,如果未能解决你的问题,请参考以下文章

jmeter-线程组

一台esxi服务器到底创建多少个虚拟机能使服务器达到最大利用

并发编程之java内存模型

java并发线程锁技术的使用

到底线程池应该设置多少合适?

Java高并发-概念