鎖狀態:
當一個對象剛開始new出來時,該對象是無鎖狀態。此時偏向鎖位為0,鎖標志位01
如果有線程上鎖:
指的就是把markword的線程ID改為自己線程ID的過程
如果有線程競爭:
撤銷偏向鎖,升級輕量級鎖
線程在自己的線程棧生成LockRecord,用CAS操作將markword設置為指向自己這個線程的LockRecord的指針,設置成功者得到鎖
如果競爭加劇
競爭加劇:有線程超過10次自旋, -XX:PreBlockSpin,或者自旋線程數超過CPU核樹的一半,1.6之后,加入自適應自旋adapative self spinning,JVM自己控制;
升級重量級鎖: 向操作系統升級資源,等待操作系統的調度,然后再映射會用戶空間;
分代年齡:
分代年齡占4位,即最大值為15,所以新生代中的對象在eden區和survior區進行15次轉移,當達到最大值時,再轉移到老年代