Java基础 | 对象在内存中的存储布局以及如何计算对象的大小

总结图

image

Java 内存结构

第一部分:对象头
  1. markword:用于存储对象自身的运行时数据,如哈希码、GC分代年龄、锁状态标志、线程持有的锁等。这部分数据长度在32位机器和64位机器虚拟机中分别为4字节和8字节(64位的JVM为了节约内存可以使用选项+UseCompressedOops开启指针压缩,开启该选项后,占用字节数降为4字节);
    image

  2. 类型指针:即对象指向它的类元数据(保存在方法区)的指针,虚拟机通过这个指针来确定这个对象属于哪个类的实例,指针占用4个字节(64位机器占8个字节);

  3. 数组长度(只有数组对象才有):如果是 Java 数组,对象头必须有一块用于记录数组长度的数据,用4个字节int来记录数组长度;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值