2015-05-07 58 views
2

Long和double需要64位內存。這導致這些類型需要兩個地址空間。Long,Double和64位內存

在64位JVM的是,這仍然是這樣嗎?由於這些值現在可以適合單個地址空間,因此這意味着這些類型現在存儲在單個地址空間中嗎?

這是否對線程有影響,在這些類型上需要使用volatile來確保 每個單獨的地址空間不會亂序更新?

+2

Java的應該是虛擬機獨立:所以這意味着Java程序總是執行同樣的方式,不管它的方式在虛擬機實現... –

+0

@CommuSoft嚴格來說,這是不正確的。你得到同樣的保證。但這些擔保沒有涵蓋的內容可以自由更改。所以64位虛擬機允許(實際上鼓勵)把'double'和'long'寫成原子,但是你不能保證它會發生。 – biziclop

+0

參考先前的回答像http://stackoverflow.com/questions/25173208/value-integrity-guarantee-for-concurrent-long-writes-in-64-bit-openjdk-7-8 – JiriS

回答

相關問題