Java对象头

本文详细解析了Java对象头的存储结构,特别是在32位JVM环境下MarkWord的布局,包括锁状态、HashCode、对象分代年龄等关键字段。深入探讨了Java SE 1.6中的四种锁状态:无锁、偏向锁、轻量级锁和重量级锁,以及它们之间的升级过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java对象头
1、存储结构
  • 32位的JVM Mark Word的存储结构为:

    锁状态25bit4bit1bit是否是偏向锁2bit标志位
    无锁状态对象的HashCode对象的分代年龄001

    在同步的时候获取对象的monnitor,即获取到对象的的锁。锁,无非就是一个对对象的标志,这个标志存放在Java对象的对象头。如上表格所示,Mark Word会默认存放HashCode、年龄值、以及锁标志位。

2、锁的状态
  • JavaSE1.6中,锁一共有四种状态,级别从低到高依次是:

    • 无锁状态
    • 偏向锁状态
    • 轻量级锁状态
    • 重量级锁状态
  • 这几个状态会随着竞争情况逐渐升级,锁可以升级,但是不能够降级,这种能升级但不能降级的策略主要是为了 提高获得锁和释放锁的效率

  • MarkWord变化图
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值