美文网首页一些收藏Java
synchronize原理-对象头mark word对象大小(g

synchronize原理-对象头mark word对象大小(g

作者: 胖达_4b7e | 来源:发表于2020-10-26 09:50 被阅读0次

    对象

    public class L {
    }
    
    

    对象:

    • 12字节的头
    • 4字节 对齐填充 因为jvm以8字节的倍数 为一个slot 最小等我

    加一个field int a;


    没有变大, 刚好不用填充了

    对象头

    就是任意对象都要有的开头
    如上文所述, 12字节, 就是96bit



    后4字节 就是32bit , 指向所属class

    mark word

    8字节, 64位


    hash

    无锁 却不可偏向, 是因为 已经算了hash值了, 放了hash值就没地方放 偏向的线程id了,
    不能偏向, 一来就是轻量锁, 因为轻量锁直接把原来的markword 放到抢到锁的线程的栈里面了, 就有地方放hash了
    如果还没被当过锁, 就是还没偏向, 并且 么算过hash, 那么 那块就都是 0

    是倒过来放的


    这是小端模式 就是比如 int i=1, 实际存储是, 打印出来就感觉反了


    unused


    这25bit 永远是0



    这bit也是

    age

    biased_lock 偏向标识

    0不可偏向: 因为已经hash了
    1可偏向(不一定是不是在偏向了)



    ↓ 加偏向锁以后 101(可偏向+现在是偏向锁)


    相关文章

      网友评论

        本文标题:synchronize原理-对象头mark word对象大小(g

        本文链接:https://www.haomeiwen.com/subject/chnnmktx.html