(十一)JUC - Java对象内存布局和对象头

面试

Q:Object obj = new Object(); 谈谈对这句话的理解?

位置所在:JVM-  > 新生区 > 伊甸园区

构成布局:头体(想想HTML报文)

1. 对象的内存布局:

对象头(Header)、实例数据(Instance Data)、对齐填充(Padding)

2. 对象内存布局 - 对象头 - 对象标记

对象头 Mark Word

Q:对象头多大?

A:在64位系统中,Mark Word占了8个字节,类型指针占8个字节,一共16个字节。

3. 对象内存布局 - 对象头 - 类型指针

类型指针:对象指向它的类元数据的指针,虚拟机通过这个指针来确定对象是哪个类的实例。

4. 对象内存布局 - 实例数据、对齐填充

5. 64位标记图

6. 对象布局 - JOL证明

JOL : Java Object Layout

定位:分析对象在JVM的大小和分布

<!-- https://mvnrepository.com/artifact/org.openjdk.jol/jol-core -->

<dependency>

    <groupId>org.openjdk.jol</groupId>

    <artifactId>jol-core</artifactId>

    <version>0.9</version>

    <scope>provided</scope>

</dependency>

7. 对象布局 - 对象分代年龄

对象分代年龄:4 bit

测试:配置jvm参数  -XX:MaxTenuringThreshold=16

无法启动:MaxTenuringThreshold of 16 is invalid; must be between 0 and 15

8. 压缩指针参数说明

命令:java -XX:+PrintCommandLineFlags -version

默认开启压缩说明

-XX:+UseCompressedClassPointers

1) 默认配置,启动了压缩指针,-XX:+UseCompressedClassPointers,

12 + 4(对象填充) = 16字节

2) 手动配置,关闭了压缩指针,-XX:-UseCompressedClassPointers,

8 + 8 = 一个对象16字节

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值