亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

Java虛擬機最多支持多少個線程的探討

2019-11-26 15:32:39
字體:
來源:轉載
供稿:網友

McGovernTheory在StackOverflow提了這樣一個問題:

Java虛擬機最多支持多少個線程?跟虛擬機開發商有關么?跟操作系統呢?還有其他的因素嗎?


Eddie的回答:

這取決于你使用的CPU,操作系統,其他進程正在做的事情,你使用的Java的版本,還有其他的因素。我曾經見過一臺Windows服務器在宕機之前有超過6500個線程。當然,大多數線程什么事情也沒有做。一旦一臺機器上有差不多6500個線程(Java里面),機器就會開始出問題,并變得不穩定。

以我的經驗來看,JVM容納的線程與計算機本身性能是正相關的。

當然了,你要有足夠的本機內存,并且給Java分配了足夠的內存,讓每個線程都可以擁有棧(虛擬機棧),可以做任何想做的事情。任何一臺擁有現代CPU(AMD或者是Intel最近的幾代)和1-2G內存(取決于操作系統)的機器很容易就可以支持有上千個線程的Java虛擬機。

如果你需要一個更精確的答案,最好是自己做壓測。

Charlie Martin的回答:

這里有很多的參數(可以設置)。對于特定的虛擬機,都會有自己的運行時參數。(最大線程數)一定程度上由操作系統決定的:底層的操作系統要給線程提供哪些支持?施加哪些限制?虛擬機使用的是原生的操作系統的線程還是red thread或者green thread?

操作系統提供的支持是另一個問題。如果你向下面這樣寫Java程序:

復制代碼 代碼如下:

class DieLikeADog {
      public static void main(String[] argv){
          for(;;){
             new Thread(new SomeRunaable).start();
          }
      }
 }

(不要抱怨語法細節,這才剛剛開始)那你當然希望能得到成百上千個運行的線程。但是,創建一個線程的成本是相對較大的,(過多線程)調度的開銷會變得突出。能否讓這些線程做有用的事情還不確定。

升級版

好了,迫不及待了!下面是我的一個加了點潤色的小的測試程序:

復制代碼 代碼如下:
public class DieLikeADog {
    private static Object s = new Object();
    private static int count = 0;
    public static void main(String[] argv){
        for(;;){
            new Thread(new Runnable(){
                    public void run(){
                        synchronized(s){
                            count += 1;
                            System.err.println("New thread #"+count);
                        }
                        for(;;){
                            try {
                                Thread.sleep(1000);
                            } catch (Exception e){
                                System.err.println(e);
                            }
                        }
                    }
                }).start();
        }
    }
}

在Intel的OS/X 10.5.6系統上,Java 5的輸出如下:
復制代碼 代碼如下:

New thread #2547
New thread #2548
New thread #2549
Can't create thread: 5
New thread #2550
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:592)
        at DieLikeADog.main(DieLikeADog.java:6)

benjismith的回答:

讀了Charlie Martin的回復以后,我很想知道堆內存的大小是否能夠給創建的線程數帶來不同,然后我就被結果驚呆了:在Vista Home Premium SP1系統上,使用JDK 1.6.0_11,設置堆內存的大小從2M到1024M來執行Charlie的測試程序。比如:創建2M的堆內存,我使用的虛擬機參數是:-Xms2m -Xmx2m.

下面是我的測試結果:

復制代碼 代碼如下:
2 mb --> 5744 threads
4 mb --> 5743 threads
8 mb --> 5735 threads
12 mb --> 5724 threads
16 mb --> 5712 threads
24 mb --> 5687 threads
32 mb --> 5662 threads
48 mb --> 5610 threads
64 mb --> 5561 threads
96 mb --> 5457 threads
128 mb --> 5357 threads
192 mb --> 5190 threads
256 mb --> 5014 threads
384 mb --> 4606 threads
512 mb --> 4202 threads
768 mb --> 3388 threads
1024 mb --> 2583 threads

所以,堆的大小確實很重要。但是,堆大小和最大線程數卻是呈反比例關系。
這太詭異了!

Neil Coffey的回答:

絕對理論上的最大線程數是進程的用戶地址空間除以線程棧的大小(現實中,如果內存全部給線程棧使用,就不會有能運行的程序了)。因此,以32位Windows系統為例,每一個進程的用戶地址空間是2G,假如每個線程棧的大小是128K,最多會有16384(=2*1024*1024 / 128)個線程。實際在XP系統上,我發現大約能啟動13000個線程。

然后,我認為,你的問題本質上是:(a)你是否可以在你的代碼中有效的管理許多的線程,不讓他們做很顯然是愚蠢的事情(比如:讓他們在同一個object對象上等待隨后被調用notifyAll()…),(b)操作系統是否可以有效地管理這許多線程。基本上來說,如果(a)的答案是”yes”的話,(b)的答案也是”yes”。

很巧的是,你可以在Thread的構造函數中設置線程棧的大小,但是,你不需要也不應該把這個和虛擬機參數弄混淆。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩有码在线电影| 国产精品一香蕉国产线看观看| 亚洲激情视频网站| 日韩精品欧美国产精品忘忧草| 欧美性生交xxxxx久久久| 国语自产在线不卡| 国产日韩欧美在线| 911国产网站尤物在线观看| 欧美午夜宅男影院在线观看| 亚洲精品美女网站| 欧美另类高清videos| 中文字幕精品在线视频| 色哟哟亚洲精品一区二区| 久久亚洲国产成人| 亚洲国产日韩一区| 欧美久久久精品| 精品国产一区二区三区四区在线观看| 日韩精品中文字幕有码专区| 国产欧美日韩中文| 伊人久久综合97精品| www.亚洲一二| 国产福利视频一区二区| 91亚洲精品久久久久久久久久久久| 欧美寡妇偷汉性猛交| 日韩激情视频在线播放| 国产一区二区黑人欧美xxxx| 亚洲久久久久久久久久| 欧美午夜激情小视频| 福利视频一区二区| 亚洲激情国产精品| 人妖精品videosex性欧美| 色综合久久悠悠| 精品无人区太爽高潮在线播放| 国产精品www色诱视频| 92版电视剧仙鹤神针在线观看| 久久不射热爱视频精品| 91超碰caoporn97人人| 国产精品极品美女粉嫩高清在线| 91精品视频在线播放| 国产精品永久在线| 国产精选久久久久久| 亚洲999一在线观看www| 亚洲欧美精品一区二区| 97在线视频免费播放| 久久久久久有精品国产| 亚洲综合一区二区不卡| 国内精久久久久久久久久人| 浅井舞香一区二区| 国产精品亚洲片夜色在线| 亚洲a在线播放| 欧美孕妇孕交黑巨大网站| 色无极亚洲影院| 精品久久久久久久中文字幕| 欧美日韩国产成人高清视频| 日韩天堂在线视频| 一本色道久久88综合亚洲精品ⅰ| 日韩a**站在线观看| 欧美一级片免费在线| 日韩av影片在线观看| 精品国产区一区二区三区在线观看| 97人人做人人爱| 国产视频观看一区| 51视频国产精品一区二区| 国产成人亚洲综合91| 久久久久亚洲精品| 俺去啦;欧美日韩| 亚洲电影成人av99爱色| 欧美性jizz18性欧美| 在线观看中文字幕亚洲| 日本成人在线视频网址| 欧美日韩精品在线| 久久99精品久久久久久噜噜| 亚洲精品一区中文字幕乱码| 26uuu另类亚洲欧美日本一| 国产性色av一区二区| 国产精品大片wwwwww| 亚洲无线码在线一区观看| 亚洲成人精品视频在线观看| 久久久www成人免费精品张筱雨| 日韩有码在线电影| 午夜精品久久久久久久久久久久久| 欧美另类老肥妇| 色综合老司机第九色激情| 自拍视频国产精品| 久久视频在线直播| 欧美成人精品在线视频| 亚洲精品成人久久电影| 日韩高清a**址| 91精品视频在线播放| 97超碰色婷婷| 草民午夜欧美限制a级福利片| 亚洲美女在线看| 成人精品在线视频| 欧美片一区二区三区| 国产精品wwwwww| 97视频在线免费观看| 一本大道久久加勒比香蕉| 欧美成人午夜激情| 亚洲精品小视频| 精品视频久久久久久久| 日韩成人在线电影网| 国产精品免费在线免费| 欧美电影免费播放| 日韩精品免费综合视频在线播放| 欧美极品少妇xxxxⅹ喷水| 欧洲成人在线视频| 国产成人+综合亚洲+天堂| 欧美激情网友自拍| 久久99国产精品自在自在app| 中文字幕欧美在线| 51色欧美片视频在线观看| 亚洲美女自拍视频| 毛片精品免费在线观看| 一区二区在线免费视频| 亚洲国产欧美在线成人app| 欧美精品做受xxx性少妇| 91视频国产高清| 欧美日韩国产123| 91精品久久久久久久久久入口| 超碰精品一区二区三区乱码| 日韩成人高清在线| 欧美成人h版在线观看| 色老头一区二区三区| 国产在线视频不卡| 中日韩美女免费视频网址在线观看| 97视频在线观看免费高清完整版在线观看| 亚洲国产福利在线| 成人激情黄色网| 国产精品久久久久久久久久| 精品成人av一区| 日韩在线免费高清视频| 2019亚洲男人天堂| 亚洲在线视频福利| 精品久久香蕉国产线看观看gif| 欧美怡春院一区二区三区| 久久男人资源视频| 亚洲男人天堂手机在线| 亚洲欧美精品一区| 麻豆精品精华液| 亚洲r级在线观看| 夜夜嗨av色一区二区不卡| 欧美三级欧美成人高清www| 国产日韩精品在线播放| 欧美日韩激情小视频| 欧美国产精品人人做人人爱| 热99久久精品| 日韩免费在线免费观看| 亚洲精品v天堂中文字幕| 国产精品18久久久久久首页狼| 精品视频在线播放| 热久久这里只有精品| 日韩欧美高清视频| 国产女同一区二区| 日韩中文字幕不卡视频| 91中文在线观看| 日韩h在线观看| 欧美日韩福利视频| 国产91九色视频| 国产精品专区h在线观看| 日本人成精品视频在线| 欧美激情视频在线免费观看 欧美视频免费一| 欧美第一黄网免费网站| 国产精品第二页| 久久久久久91|