Java对象结构详解

本文详细解析了Java对象在JVM中的结构,包括对象头的Mark word和Klass word,以及数组长度(如果对象是数组的话)。重点讨论了Mark word在实现synchronized加锁机制中的作用和存储的运行时数据。
摘要由CSDN通过智能技术生成
synchronized (obj) { 
    ... 
}

大家都知道以上代码可以实现加锁。有没有想过synchronized到底是怎么实现加锁的?synchronized底层的逻辑是什么样的?

要弄清楚这个问题,就有必要了解一下在JVM虚拟机中一个Java对象是怎么存在的,换句话说就是在虚拟机中用什么结构来表示一个Java对象,或者一个Java对象的组成结构是什么样的。

划重点~~

根据JVM虚拟机规范 一个Java 对象由 Object Header (对象头),Instance Data(实例数据), Padding(对齐区域) 三部分组成。

区域名

描述说明

是否必须

对象头

JVM规范规定的每个Java对象都有的一块区域,用于实现一些额外的增强功能(如:锁,hashCode,GC)

必须

实例数据

当前对象属性数据信息,包括父类的属性信息

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值