java对象的内存结构

对象本身结构描述方式–>以字节码存储在方法区中

对象的头部

  1. 对象的头部指针
    • class对象的描述
    • 内部方法
    • 属性入口
  2. Mark word
    • 是否加锁
    • GC标志位
    • monior GC次数
    • hashCode
    • 其他

32bit 系统 :指针4byte + 4byte Mark Word,如果是数组4byte描述数组的长度。

64bit 系统:开启指针压缩(-XX:useCompressedOOPS)指针4byte + Mark Word 8byte。未开启压缩:指针8byte + Mark Word 8byte

eg:new Object()。32bit 系统为例
对象 = mark word + class 指针 + body + 对齐字节(补位字节)
补位字节均补位到8byte的倍数
4 Mark Word + 4byte的class指针 + 0byte + 0 对齐字节 = 8byte 【new Object()】


注意:静态属性占用的空间,不计算到对象本身,它的引用保存在方法区。

有继承的对象属性排布:

```
1、父类子类有同一个对象头部
2、父类的属性被分配到相应的对象中
3、父类到子类的属性 做一次对齐
4、8byte对齐

class A{byte b;}
class B extend A{byte b;}
class C extend B{byte b;}

字节分布:8byte 头部 (4byte 指针+4byte Mark Word) + 1byte + 3byte【补位字节】 + 1byte + 3byte【补位字节】 + 1byte + 3byte【补位字节】 + 4byte 【class的补位字节】
总计 24byte
	
	
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值