锁状态:
当一个对象刚开始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次转移,当达到最大值时,再转移到老年代