Jvm虚拟机(二)-HotSpot虚拟机对象探秘-图文总结

第二章主要简单介绍下对象创建和内存布局,介绍了下虚拟机中内存对象的内存使用方式。

对象的创建

虚拟机中对象的创建
在这里插入图片描述

类加载在这里插入图片描述

类加载可以说是在Java堆中进行的。其中分配方式的选择又是根据其堆内存空间的是否规整来决定的。

“指针碰撞”(Bump The Pointer)

在这里插入图片描述
通过拨动指针来划分内存

“空闲列表”(Free List)

在这里插入图片描述
空闲列表记录未分配的内存空间

对象的内存布局

对象在堆内存中的储存布局

在这里插入图片描述
侧重点就是
对象头存储着对象自身的运行时数据,包含一些 哈希码(HashCode)和GC分代年龄,锁状态标志等。

一个对象的内存布局包含: 对象头、实例数据、对齐填充的数据。

对象头:存储对象自身的运行时数据,包含一些 哈希码(HashCode)和GC分代年龄,锁状态标志等,位于Mark Word数据结构中,这是一块极小的内存。 类型指针中指向它的类型元数据的指针,Java虚拟机通过这个指针 来确定该对象是哪个类的实例指针。

实例数据:对象的有效信息,我们代码中定义的各种类型的字段内容。

对齐填充:使得对象的起始地址必须是8字节的整数倍。虚拟机要求。

对象的访问定位

对象的引用

通过Java栈本地变量表,栈上的reference数据来操作堆上具体的对象
在这里插入图片描述
侧重点:
对象的引用 reference类型 不等同于对象的本身
两种访问方式 : 句柄池、直接指针

通过句柄池访问对象

在这里插入图片描述

通过直接指针访问对象

在这里插入图片描述

HotSpot虚拟机

目前总结到的 hotspot虚拟机所持有的一些特性
在这里插入图片描述

总结

该章主要介绍了对象在虚拟机中的内存是如何划分的,以及对象的储存和引用的一些介绍,以图文和思维导图的形式整理出来,希望能更清晰的展示出来。

目前第二章和后续第三章总体 xmind文件
链接: https://pan.baidu.com/s/1v-mcCz-0mxNtHvNxq80nYg 密码: 5gje
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值