java对象头的Mark Word

本文介绍了Java对象头中的Mark Word,详细讲解了其在内存中的存储布局、位长度以及在不同锁状态下的表现,重点阐述了锁升级的过程,包括无锁、偏向锁、轻量级锁和重量级锁的状态转换。
摘要由CSDN通过智能技术生成

前言

最近在做excel解析的编码,其中涉及到一个内存占用空间优化的问题。解决的方法是尽量少的创建对象,可以共用的对象信息不用创建多份。查阅资料后得到如下文章,作为学习记录使用。

JAVA对象头

由于Java面向对象的思想,在JVM中需要大量存储对象,存储时为了实现一些额外的功能,需要在对象中添加一些标记字段用于增强对象功能 。在学习并发编程知识synchronized时,我们总是难以理解其实现原理,因为偏向锁、轻量级锁、重量级锁都涉及到对象头,所以了解java对象头是我们深入了解synchronized的前提条件,以下我们使用64位JDK示例

  • 获取一个对象布局实例
  1. 首先在maven项目中 引入查看对象布局的jar包
        <dependency>
            <groupId>org.openjdk.jol</groupId>
            <artifactId>jol-core</artifactId>
            <version>0.9</version>
        </dependency>
  1. 调用如下方法获取布局
    ClassLayout.parseInstance(instance).toPrintable()
// 输出 instance对象 的布局
 System.out.println(ClassLayout.parseInstance(instance).toPrintable());
  1. 得到如下结果
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值