对象的创建
对象的创建过程
给对象分配内存
指针碰撞(Bump The Pointer):使用指针分为空闲区,使用区。分配内存时把指针向空闲区移动
空闲列表(Free List):维护一个列表,记录哪些内存块是可用的
初始化对象(设置对象头的相关信息)
调用初始化方法:HotSpot创建对象代码片段
HotSpot创建对象代码片段
对象的结构
对象头(Header)
自身运行时数据(Mark Word):动态定义的数据结构
类型指针:对象指向它的类型元数据的指针。
实例数据(Instace Data)
所定义的各种类型的字段内容(父类继承,子类定义)
对齐填充(Padding):占位符
对象的访问定位
使用句柄
句柄形式的对象访问定位
堆中分出一块内存作为句柄池
reference存储的就是对象的句柄地址
句柄中包含了对象实例数据与类型数据各自具体的地址信息
特点:reference存储的是稳定句柄地址,在对象被移动(垃圾收集)时只会改变句柄中的实例数据指针,而reference本身不需要被修改。
直接指针(HotSpot)
指针形式的对象访问定位
reference存储的就是对象地址
特点:节省了一次指针定位的时间开销。
领取专属 10元无门槛券
私享最新 技术干货