解剖Java对象

一个Java对象内部结构是什么样子的呢?

Java对象内部结构和对象头的内部结构

 

 

 

 

 

 

 

 

 

 

 

 

一个对象在内存中分为三块存储区域:1对象头、2实例数据、3对齐填充

对象头(Object Head):对象头占用12字节,对象头分为8字节(64位JVM)的对象标记(Mark Word)和4字节的类元信息(指向类元信息的引用)

实例数据(Instance Data):存储类本身的实例成员变量和所有可见的父类成员变量。

对齐填充(Padding):对象的存储空间分配单位为8个字节,总大小不足8的倍数,需要填充。

 

对象标记(Mark Word)存储对象本身运行时的数据,如哈希码、GC标记、锁信息、县城关联信息等。

类元信息(Klass)指向存储类信息的引用

举个例子:Integer实例对象占用多少字节呢?基本数据类型int占用四字节,再加12字节的对象头,是16个字节。所以,包装类对象比基本类型占用的空间还是要多很多的。

拓展阅读:

https://www.jianshu.com/p/3d38cba67f8b

https://blog.csdn.net/zqz_zqz/article/details/70233767

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

只要开始永远不晚

谢谢打赏~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值