作者:黑白 | 来源:互联网 | 2023-10-13 16:18
目录
给对象分配内存(两种)
对象结构
对象的访问定位
记录下来方便个人学习复习
内存是否规整取决于垃圾回收器的策略,当垃圾回收时压缩整理了内存,在内存分配时就是使用内存碰撞的方式
对象结构
-
Header(对象头)
-
InstanceData(实例数据)
-
Padding(队形填充)
对象的访问定位
句柄需要先指向句柄池找到对象实例的地址,再找到对象的实例,需要2步,直接指针直接指向对象的实例,需要1步即可。那么为什么还会有句柄的方式,因为如果对象发生改变(为什么会改变?因为gc算法,当复制或者整理的时候对象实例会移动在堆中的地址)栈中指向句柄池的地址不需要改变,改变的都是句柄池中的地址(句柄池和对象实例都是在堆中,所以在改变句柄池的实例指针就比改变栈中的应用指针方便)。使用直接指针的方式比句柄的方式快,Hotspot使用的是直接指针的方式
注:博文内容来自书本《深入理解Java虚拟机》第2版 周志明著