JVM Max Threads on Linux/Mac——JVM最大线程数

看到了网上关于JVM最大线程数问题的讨论,通过查阅资料加试验,整理了一些笔记,分享在此。

首先说明两个概念:jvm限制,系统限制:
- jvm限制:jvm本身内存等因素对程序结果的影响,主要涉及参数:-Xms -Xmx -Xss
- 系统限制:linux内核限制,如可用系统内存,内核支持最大线程数,pid数,最大VMA映射数

Ubuntu 14.04 LTS

系统环境:
32位ubuntu
openjdk 32位 ,4g内存,经测试最大可设置堆内存 -Xmx2550m
jdk版本:
openjdk version “1.8.0_45-internal”
OpenJDK Runtime Environment (build 1.8.0_45-internal-b14)
OpenJDK Server VM (build 25.45-b02, mixed mode)

因为JVM创建内存一定会消耗heap内存,不做讨论,只实验堆外内存。
在Ubuntu上测试,经调试heap为19m(临界值,随着测试线程数增长而不会导致heap爆仓的最小堆内存),thread stack size(Xss)为最小100k(测试使用的jvm所允许的最小值)时,能达到最大线程数并抛出堆外内存不足异常,达到系统限制上限(非jvm上限)

命令:
java -Xmx19m -Xms19m -Xss100k JVMThreadLimitTest
输出:

cnt:26658 > thread-id-26666 waiting...
Exception in thread "main" java.lang.OutOfMemoryError: unable to create new native thread
at java.lang.Thread.start0(Native Method)
at java.lang.Thread.start(Thread.java:714)
at JVMThreadLimitTest.main(JVMThreadLimitTest
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值