时月oe 2022-04-07 09:15 采纳率: 50%
浏览 27
已结题

Java偏向锁批量重偏向问题

Java中的偏向锁具有批量重偏向机制,默认是20
比如创建一个数组List<Object> list = new Vector<>();,然后插入30个Object对象,然后在Thread1中对其进行加锁,此时这30个对象全部偏向于Thread1
当Thread2也想加锁时,如果不存在锁竞争的情况下,前20个对象会被升级为轻量级锁,而剩下的10个会触发批量重偏向机制,重新偏向到Thread2,仍然是偏向锁,不会发生锁膨胀

请问JVM是如何知道应该把后10个Object批量重偏向呢?换句话说,JVM是如何知道应该把哪些对象批量重偏向呢?
视频讲的时候只演示了后面10个会被批量重偏向,就因为他们是一个数组中的原因吗?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 4月15日
    • 创建了问题 4月7日