当锁处于无锁状态时,对象标头中有25位用于标识哈希码。我想知道哈希码的用处。
最佳答案
这是一个实现细节,因为真正的定义在源代码中,例如these comments应该解释其中的一些细节。
对于hashCode
VM,默认32-bit
具有25位(不知道从何处获得23
),对于31
VM具有64-bit
。
我猜无锁状态指的是偏置锁定,但这是一个或另一个,不是同时存在的,因为在标记工作中根本没有空间。
有用性是相同的(无论您指的是什么)-只是由于位数更少,所以预期会有更高的冲突。
关于java - 哈希码在Java对象 header 中的作用是什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55471337/