对象的创建
对象的创建具体流程如下
对象的内存布局
对象的访问方式
创建对象的目的是为了使用对象,使用对象的前提是找到对象
在栈帧的局部变量表中存在一种对象引用的reference类型,但并没有定义通过什么方式去定位对象;也就是说,我们知道通过reference类型可以找到对象的位置,但没有定义它是如何、通过某种方式来寻找对象的。
主流的访问方式有两种:句柄访问和直接指针访问
句柄访问如下:
优势:在垃圾回收时,对象可能会被移动(标记-复制、标记-整理),此时只需改变句柄池中的对象实例数据的指针即可,reference无需改变,因为它指向的是句柄池的地址。
直接指针访问如下:
优势:速度快,因为节省了一次指针定位的时间开销。
注:发生GC时,对象的移动会导致reference的值被修改。HotSpot主要使用直接指针访问。