Java对象的内存布局,创建,访问图解

本文详细探讨了Java对象的内存布局,包括对象头、实例数据和对齐填充。接着,阐述了Java对象的创建过程,涉及类加载、内存分配、对象设置与初始化。最后,讨论了对象的访问方式,如句柄访问和直接指针访问,并比较了它们的优缺点。
摘要由CSDN通过智能技术生成

本文主要讲解我们在编写Java程序的时候一个new关键字,后面可能隐藏了哪些技术!

Java对象的内存布局,创建,访问详解

Java是一门面向对象的编程语言,Java程序运行过程中无时无刻都有对象被创建出来。在语言层面,创建对象通常(例外:复制 ,反序列化)仅仅是一个new关键字而已,而在虚拟机中,对象(普通对象,不包括数组和Class对象等)的创建又是怎样一个过程呢?

一、对象的内存布局(对象大概长啥样)

想要找对象,你得有个对你对象长啥样的大概描述塞,比如肤白貌美,大长腿啥的。

在HotSpot虚拟机中,对象在堆内存的存储布局可以划分为三个部分:对象头(Header)、实例数据(Instance Data) 和对齐填充(Padding)

在这里插入图片描述

1.1 对象头(Header)

HotSpot虚拟机对象的对象头部分包括两类信息。

  1. 第一类用于存储对象自身的运行时数据:

    该类中包括:哈希码(hashCode)、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等。这部分数据的长度在32位和64位的虚拟机中分别为32个比特和64个比特,官方称它为“Mark Word”

    存储内容 标志位 状态
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值