-
HotspotOverview.pdf下载
资源介绍
HotSpot虚拟机的概况文档
*每一个java对象都是一个潜在的monitor(监视器)
>synchronized 关键字
*所有现代JVM虚拟机都包含light-weight锁
>避免关联一个系统互斥信号量或者每个对象的条件变量(heavy-weight lock)
>当没有竞争时,使用原子变量进入或者退出monitor
>当有竞争时,退回到heavy-weight的OS锁
*高效,因为大多数锁都是没有竞争的
Light-weight Locking (轻-重锁)
*每一个对象的第一个字节是 mark word
*用来做同步和GC
>同样的如果之前计算过,就缓存hashcode
*markWord的低位2个字节用来存储同步状态
>01 => unlocked
>00 => light-weight locked
>10 => heavy-weight locked
>11 => marked for GC
Light-weight Locking (轻-重锁)
*当对象被锁定时,mark word 被拷贝到线程栈的建造中的lock record
>又叫做,移位mark
*使用原子操作CAS引导尝试使mark word 指向lock record
*如果CAS成功,线程获得锁
*如果CAS失败,竞争:锁膨胀(制造heavy-weight 重锁)