Unsafe.putAddress和Unsafe.putLong方法之间有什么区别?

时间:2018-07-20 08:14:55

标签: java

1 个答案:

答案 0 :(得分:1)

javadoc对此非常清楚。对于putAddress(),它表示:

  

实际写入目标地址的字节数可以通过咨询#addressSize来确定。

putLong()放置long值的所有位。

换句话说:一个地址可能会消耗一个长值的所有位,但是不必要一定要!然后将64位写入内存中的某个位置绝不是一个好主意!

因此,您需要能够区分这两种使用情况(在64位中写入 n位,而在中精确写入64位)。

但具体来说,地址大小的javadoc说:

  

报告本机指针的大小(字节)。此值为4或8。

因此,我想出于所有实际目的,这两种方法都是一样的。因为这些天来,(几乎?!)全部都存在JVM A)实现了这些方法,B)是64位JVM。 (因此,我假设32位JVM将返回4而不是8)