首页 > 编程语言 >java虚拟机能并发的启动多少个线程

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

时间:2023-01-04 16:24:22浏览次数:40  
标签:java Thread 虚拟机 线程 new public

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

复制代码
 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 减少单个线程的栈大小,在有效范围内,是倍数关系

标签:java,Thread,虚拟机,线程,new,public
From: https://www.cnblogs.com/kn-zheng/p/17025193.html

相关文章

  • 线程1 - 基础
    进程与线程process进程:运行中的程序一个process可以包含多个threadthread线程:类似流水线中的段,实现进程中的一个功能一个Java进程至少包含一个主线程-main线......
  • Java获取音频文件(MP3)的播放时长
    最近的一个项目需要按照时间播放mp3文件,例如,播放10分钟的不同音乐。这就意味着我得事先知道mp3文件的播放时长,以决定播放几遍这个文件。方案一:Java的方式找第三方的库,真......
  • 又见JavaWeb的中文乱码
    简单翻了一下记录,我已经写了至少4篇关于编码和乱码的博客了,每次都觉得自己懂了。实际上,这次的遭遇证明了“真懂”是一种很难达到的境界,吾辈仍需努力!一、背景是这样子的:......
  • Java 中文字符串编码之GBK转UTF-8
    写过两篇关于编码的文章了,以为自己比较了解编码了呢?!结果今天又结结实实的上了一课。以前转来转去解决的问题终归还是简单的情形。即iso-8859-1转utf-8,或者iso-8859-1转gb......
  • Linux删除多个java进程的其中一个
    一、背景:Linux后台运行了多个Java程序,进程名都是java。执行pkilljava会一次性杀掉所有的java进程。二、解决思路:1先通过一定的检索条件,定位出指定的java进程23......
  • java LinkedHashMap学习
    一、LinkedHashMap概述LinkedHashMap是HashMap的一个子类,它保留插入的顺序,如果需要输出的顺序和输入时的相同,那么就选用LinkedHashMap。LinkedHashMap是Map接口的哈希表......
  • 线程池c3p0和dbcp2的配置初始化实例
    一、c3p0publicclassConnectionManager{publicstaticComboPooledDataSourcedataSource;static{try{dataSource=newComboP......
  • 解答|虚拟机、容器和沙箱是什么关系?
    首先,什么是沙箱?它本身就是一种线下生活现象的虚拟化。现实世界里,小孩子们在沙地、沙滩上用木板隔离出一个方盒子,在盒子里堆砌、创造各种东西-城堡、房屋、山丘...这就是......
  • freeswitch编译java esl
    一、背景假设源代码路径为/home/freeswitch二、编译安装libesl.a1.cd/home/freeswitch(源代码的根目录)执行./configure,以便生成必要的Makefile文件。2.cd/home/fre......
  • Java程序(非web)slf4j整合Log4j2
    一、依赖包准备//slf4j项目提供compilegroup:'org.slf4j',name:'slf4j-api',version:'1.7.25'//log4j2项目提供compilegroup:'org.apache.logging.log4j',na......