2015-05-07 55 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

回答

相关问题