Revisiting synchronized lock upgrade: JVM‑level details of biased, lightweight and heavyweight locks
This article explains how the JVM implements synchronized by using the object header's Mark Word to transition through biased, lightweight, and heavyweight lock states, covering the underlying data structures, lock acquisition and release processes, revocation, downgrade, tuning parameters, practical verification, performance pitfalls, and a comparison with ReentrantLock.
