当锁处于无锁状态时,对象头中有25位用于标识哈希码。我想知道hashcode的用处。
这是一个实现细节,因此真正的定义在源代码中,例如these comments应该解释其中的一些细节。
默认的hashCode
有25位用于32-bit
VM(不知道你从哪里得到23
)和31
用于64-bit
VM。
我想通过无锁状态你的意思是偏向锁定,但它是一个或另一个,而不是两个同时,因为标记中没有空间可以同时工作。
实用性是相同的(无论你的意思是什么) - 只是因为有较少的位,所以预期会有更高的冲突。