JVM - 【对象内存布局】3部分 + JOL检测

对象内存布局

在这里插入图片描述

  • 对象在JVM中是如何存储的?
  • 对象头中都有哪些东西?

一:对象头(Header)

1> 标记字(MarkWord)

  • HashCode
  • GC分代年龄
  • 对象持有的锁
  • 对象持有的锁状态
  • 线程ID

2> 类型指针(Class Pointer)

  • 指向元数据类型(指明当前类类型)
    • obj.getClass()

二:实例数据(Instance Data)

1> 父类数据

2> 子类数据

三:对齐填充(Padding)

确保内存规整

64位CPU,内存对齐大小为8B,不够的部分使用空内容进行填充。



附加图片(理解性)
对象执行过程及内存中存储


四:JOL查看对象内存布局

String s = ClassLayout.parseInstance(ts[0]).toPrintable();

在这里插入图片描述
Q1: 子类中父类的成员变量在内存中如何存放?
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值