JVM(hotspot 64位)對象頭內部組成、鎖升級過程


 

鎖狀態:

  當一個對象剛開始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次轉移,當達到最大值時,再轉移到老年代

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM