标签:虚拟 分配 java对象 book 分代 指令 类加载 交流 关键字
以Hotspot虚拟机为例,描述对象的 创建过程。
通过new关键字创建对象
java程序初始化对象
经历完上面过程,虚拟机层面看一个对象已经创建完成,但java程序层面的对象创建才刚刚开始。虚拟机执行完new指令后会接着执行
对其填充
不是必然存在的,没有特别的含义,仅起着占位符的作用。
通过句柄访问
java堆会划出一块内存来作为句柄池,reference中存储的就是对象的句柄地址,而句柄地址中包含了对象实例数据与类型数据各自的具体地址信息。如下图:
直接指针访问
reference中直接存储对象地址,如下图:
两种访问方式的对比
句柄访问:存储的是稳定的句柄地址,对象改变时仅改变句柄的实例数据指针,而reference本身不需要修改
直接指针:最大的好处是访问速度更快,节约了一次指针定位时间的开销(Hotspot使用这种方式)
关注微信公众号一起读书学习交流
标签:虚拟 分配 java对象 book 分代 指令 类加载 交流 关键字
原文地址:https://www.cnblogs.com/vincili/p/9310700.html