亮,有一计

文章 分类 评论
49 17 9

站点介绍

这是一个热爱和别人一起交流学习的程序员所建立的个人博客 欢迎大家交流讨论

Java对象内存布局和对象头

liang 2022-07-19 130 0条评论 java锁多线程知识juc多线程编码学习

首页 / 正文
本站的文章若无特殊标明转载的话均为原创,有些文章在我的csdn个人站也有,两者基本上是同步的 博客地址

发布于2022-07-08

对象布局

对象的存储布局

一个对象在堆内存中的存储布局是由三部分来组成的:

  • 对象头
  • 实例数据
  • 对齐填充(保证8个字节的倍数)
    Image

    对象头结构

    java对象的对象头由两部分构成:

  • 对象标记(又称为Mark Word)
  • 类元信息(又称为类型指针)

    Mark Word的作用

    默认存储对象的HashCode、分代年龄和锁标志位等信息。
    这些信息都是与对象自身定义无关的数据,所以MarkWord被设计成一个非固定的数据结构以便在极小的空间内存存储尽量多的数据。
    它会根据对象的状态复用自己的存储空间,也就是说在运行期间MarkWord里存储的数据会随着锁标志位的变化而变化。
    mark word
    他的存储内容是什么

存储内容标志位状态
对象哈希码,对象分代年龄01未锁定
指向锁记录的指针00轻量级锁定
指向重量级锁的指针10膨胀(重量级锁定)
空,不需要记录信息11GC标记
偏向线程ID,偏向时间戳,对象分带年龄01可偏向

在64位系统中,Mark Word占了8个字节(就是64bit大小的存储容量),其具体的存储结构为:
mark word具体占用的内存空间作用

小知识点:GC年龄采用4位bit存储,最大也只能为15,所以MaxTenuringThreshold参数默认值就是15,也不能超过15

类型指针

直接指向了方法区内的kclass信息

对象头的大小

在64位系统中,Mark Word占用了8个字节,类型指针占用了8个字节,对象头总计是16个字节的大小

实例数据

存放类的属性(Field)数据信息,包括父类的属性信息,如果是数组的实例部分还包括数组的长度,这部分内存按4字节对齐。

对齐填充

虚拟机要求对象起始地址必须是8字节的整数倍。填充数据不是必须存在的,仅仅是为了字节对齐,这部分内存按8字节补充对齐。

代码证明

引入JOL依赖

用来分析Java虚拟机和对象的一些基础信息

        <dependency>
            <groupId>org.openjdk.jol</groupId>
            <artifactId>jol-core</artifactId>
            <version>0.16</version>
        </dependency>

Java代码证明

static class MyObject {
        int i =89;
        long a = 889;
        char b = 'b';
    }

    public static void main(String[] args) {
        System.out.println(ClassLayout.parseInstance(new MyObject()).toPrintable());
    }

压缩指针介绍

尾巴参数说明

java -XX:+PrintCommandLineFlags -version 这个可以显示JVM自带的的一些默认参数出来
64位的JVM自己默认就开启了压缩指针 默认是这个参数 -XX:+UseCompressedClassPointers

开启压缩与不开启的区别

开启压缩时,类型指针就为4个字节,不开启的时候类型指针为8个字节

评论(0)

最新评论

  • Hello Word !

    我发现我的评论功能,加载不了头像!朋友圈和相册也加载不了,音乐播放器也不显示,求解!

  • il: Clark11370

    Margenemh 357 fotballdrakter til bedriftslag Coreyc – Coin Media – журнал о заработке в интернете Francesco CasieDalu maglia argentina AbbieLand JessRoman Website Darrellie PaulinaRu Profile of ChristieRy SidneyMgw ToneyKrog Liverpool Tøj - Blog Profile - iotaJots JaimieChe TriciaBri Wolearn: GregoryEmelia: Magliette Calcio Poco Prezzo SheltonTh WayneHone 438 Chile Tröja Barn Leopol – Profile – Primescool Forum CharlineC VitoHartf norge bortedrakt to receive adulation, always insists the result is most important and will therefore be thoroughly disheartened by this display. As is often the case in friendly matches, there was a lack FedericoW صفحه اصلی – Maglia Porto KurtBrise of urgency for large periods during this match, though Wales did link play promisingly in attack through Wilson and Brooks. Italy will be among the nations in pot one for the Euro 2020 qualifying draw in Dublin on 2 December having drawn 0-0 against Portugal in their previous match to ensure a second-place finish in Nations League Group 3A. TanjaFitz Elizabeth manchester city tröjor KenPoulin CarenWhar Maglia Juventus Bambino EmeliaBow Stephaine liverpool drakt DarlaFulm FerneSuvg barcelona FC drakt Meaganold EmilyEise arsenal drakt KourtneyS Kellyejoh inter trøje JamaalWor Loisniyet psg drakt MaricelaS CecileSwa lavora come produttore esecutivo della serie CharissaC ChastityF Home - Liverpool Drakt EmilGmvut CasieDalu maglia argentina AbbieLand UrsulaLof rashford numero maglia KareemCap SSNGilber arsenal drakt 2022 MelodeePe

  • arsenal trøjer

    BrittnyFo atletico madrid tröja ClaritaBu ZJRBridge magliette psg JosephDur Valentina real madrid drakt MarionTol NevaLangt manchester united drakt BraydenBo RodolfoCa Real Madrid Tröja KelliefjL BettinaMi Notenbrood op top niveau MillardMh RichardMo arsenal drakt Bradleyjo TanyaNuge Spanien landsholdstrøje AprilBuck JoannaShe Billige Polen Fotballdrakter NiklasWes Maryellen terza maglia milan PrincessN AnhGiffen real madrid tröja FredricAu JoannaShe Billige Polen Fotballdrakter NiklasWes EssieOate juventus matchtröja PreciousF EdnaTippe sabinahogan447 EffieOcon MichaelaH liverpool tröja barn KayleighM JonnieHoc nuova maglia roma 2021/22 CortezSha YDZClaire ac milan drakt KathleneH CedricBac manchester united drakt Peterysjl HaicoQcmw Maglia Brasile Femmina ThereseJu DoreenMes napoli trøje JadaLanni

  • maglie hellas verona 2022

    Your style is very unique in comparison to other folks I have read stuff from. Many thanks for posting when you have the opportunity, Guess I'll just bookmark this blog. maglie hellas verona 2022 IlanaGxrn frankrike tröja JaneenZtt

  • inter milan tröja

    I truly love your site.. Pleasant colors & theme. Did you make this website yourself? Please reply back as I'm hoping to create my own website and would like to learn where you got this from or just what the theme is named. Cheers! inter milan tröja LilianaCz Frankrike Tröja Barn NganRjpfi

日历

2022年12月

    123
45678910
11121314151617
18192021222324
25262728293031

友情链接

文章目录

推荐关键字:

站点公告
本站的文章若无特殊标明转载的话均为原创,有些文章在我的csdn个人站也有,两者基本上是同步的 博客地址
点击小铃铛关闭