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

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

一个JavaVM可以支持多少个线程?这是否因供应商而异?通过操作系统?其他因素?



Helenr
浏览 600回答 3
3回答

慕尼黑5688855

这取决于您正在使用的CPU、操作系统、其他进程正在执行的操作、您使用的Java版本以及其他因素。我见过Windows服务器有>6500线程,然后才把机器打开。当然,大多数线程没有做任何事情。一旦机器命中了大约6500个线程(在Java中),整个机器就开始出现问题并变得不稳定。我的经验表明,Java(最近的版本)可以愉快地消耗尽可能多的线程,就像计算机本身能够在没有问题的情况下运行一样。当然,您必须拥有足够的RAM,并且必须使用足够的内存启动Java,以完成线程所做的一切,并为每个线程创建一个堆栈。任何具有现代cpu(最近几代AMD或Intel)并有1-2千兆内存(取决于操作系统)的机器都可以很容易地支持jvm千丝线。如果你需要一个比这更具体的答案,你最好的选择就是分析。

茅侃侃

在阅读了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所以,是的,堆的大小肯定很重要。但是堆大小和最大线程数之间的关系是成反比的。这很奇怪。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java