为了账号安全,请及时绑定邮箱和手机立即绑定

一个JavaVM可以支持多少个线程?

一个JavaVM可以支持多少个线程?

Helenr 2019-06-29 17:27:30
一个JavaVM可以支持多少个线程?一个JavaVM可以支持多少个线程?这是否因供应商而异?通过操作系统?其他因素?
查看完整描述

3 回答

?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

这取决于您正在使用的CPU、操作系统、其他进程正在执行的操作、您使用的Java版本以及其他因素。我见过Windows服务器有>6500线程,然后才把机器打开。当然,大多数线程没有做任何事情。一旦机器命中了大约6500个线程(在Java中),整个机器就开始出现问题并变得不稳定。

我的经验表明,Java(最近的版本)可以愉快地消耗尽可能多的线程,就像计算机本身能够在没有问题的情况下运行一样。

当然,您必须拥有足够的RAM,并且必须使用足够的内存启动Java,以完成线程所做的一切,并为每个线程创建一个堆栈。任何具有现代cpu(最近几代AMD或Intel)并有1-2千兆内存(取决于操作系统)的机器都可以很容易地支持jvm丝线。

如果你需要一个比这更具体的答案,你最好的选择就是分析。


查看完整回答
反对 回复 2019-06-29
?
茅侃侃

TA贡献1842条经验 获得超21个赞

在阅读了CharlieMartin的文章之后,我很好奇堆大小是否会对您可以创建的线程数量产生任何影响,我对结果感到十分困惑。

在Vista Home PremiumSP1上使用JDK 1.6.0_11,我执行Charlie的测试应用程序,其堆大小在2MB到1024 MB之间。

例如,为了创建一个2MB的堆,我使用参数Xms2m-Xmx2m调用JVM。

以下是我的研究结果:

2 mb --> 5744 threads4 mb --> 5743 threads8 mb --> 5735 threads12 mb --> 5724 threads16 mb --> 5712 threads24 mb --> 5687 threads32 mb --> 5662 threads48 mb --> 5610 threads64 mb --> 5561 threads96 mb --> 5457 threads128 mb --> 5357 threads192 mb --> 5190 threads256 mb --> 5014 threads384 mb --> 4606 threads512 mb --> 4202 threads768 mb --> 3388 threads1024 mb --> 2583 threads

所以,是的,堆的大小肯定很重要。但是堆大小和最大线程数之间的关系是成反比的。

这很奇怪。


查看完整回答
反对 回复 2019-06-29
  • 3 回答
  • 0 关注
  • 599 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信