簡體   English   中英

Java在32位計算機中可以創建的線程數

[英]Number of threads that can be created in Java in 32 bits machines

在實踐中閱讀Java並發性,在下面的段落中有些困惑,涉及32位機器中可以在Java中創建的線程數:

在32位計算機上,主要限制因素是線程堆棧的地址空間。 每個線程維護兩個執行堆棧,一個用於Java代碼,一個用於本機代碼。 典型的JVM默認值產生的組合堆棧大小約為半兆字節。 (您可以使用-Xss JVM標志或通過Thread構造函數來更改此設置。)如果將每個線程的堆棧大小划分為2 32 ,則限制為數千個或數萬個線程。 其他因素,例如操作系統限制,可能會施加更嚴格的限制。

這是什么意思? 2 32數字從何而來? 如果在Thread類中沒有將堆棧大小作為參數的構造函數,我如何在Thread構造函數中更改堆棧大小?

圖2 32是對32位進程的地址空間大小的硬限制。 “ 32位處理”是指使用32位來表示每個地址,因此最多可以有2 32個不同的地址。

該段說,由於每個線程僅必須為線程的堆棧保留大約512 * 1024個地址,所以由於地址數量有限,只能有這么多線程。

請注意,2 32是理論上的定義極限。 在實踐中,如果操作系統為32位進程提供了3/4的可用空間,您可能會感到很幸運。

  1. 有一個構造函數以堆棧大小作為參數。

  2. 2^32是虛擬地址空間的大小。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM