java吧 关注:1,273,437贴子:12,783,542
  • 1回复贴,共1

关于JVM最大支持线程数

只看楼主收藏回复

发现关于JVM最大支持线程数的文章都比较老,有没有同学研究过这个.
最常见的公式是:(MaxProcessMemory - JVMMemory - ReservedOsMemory) / (ThreadStackSize)
感觉总是对不上号.
使用虚拟机做了个试验,配置
ubuntu18.04 4G内存+ openjdk8
1. java -Xms512m -Xmx512m -Xss1024k Hello
2. java -Xms1024m -Xmx1024m -Xss1024k Hello
3. java -Xms2024m -Xmx2024m -Xss1024k Hello
4. java -Xms1024m -Xmx1024m -Xss512k Hello
得到的结果都没有变化.
如果按照上面公式所说的,默认ThreadStackSize为1m, 那么理论上自己创建的线程最大应该4000, 实际结果是9000
如果每个线程1m, 9000不是9G了? 这不可能啦.
所以疑惑是不是在jdk8后, JVM做了某些改进? 那么具体是如何呢?


IP属地:广东1楼2020-07-12 11:04回复
    查看ubuntu的内存占用率, 发现启动一个java程序后, free memory并没有减少太多, 我在启动时设置的-Xms1024m -Xmx1024m没有效果? 这就有点意思了.


    IP属地:广东2楼2020-07-12 11:08
    回复