Java中的偏向锁具有批量重偏向机制,默认是20
比如创建一个数组List<Object> list = new Vector<>();
,然后插入30个Object对象,然后在Thread1中对其进行加锁,此时这30个对象全部偏向于Thread1
当Thread2也想加锁时,如果不存在锁竞争的情况下,前20个对象会被升级为轻量级锁,而剩下的10个会触发批量重偏向机制,重新偏向到Thread2,仍然是偏向锁,不会发生锁膨胀
请问JVM是如何知道应该把后10个Object批量重偏向呢?换句话说,JVM是如何知道应该把哪些对象批量重偏向呢?
视频讲的时候只演示了后面10个会被批量重偏向,就因为他们是一个数组中的原因吗?