一.对象是如何被访问的
在Java本地变量表也就是栈中的局部变量表(栈 在Hotspot中将本地方法栈和java虚拟机栈合二为一 )中会有reference数据来操作堆上的对象实例。主流有两种访问方式 句柄和直接指针
1.句柄 需要维护一个句柄池 通过reference指向句柄然后通过句柄指向对象实例数据的指针和对象类信息的指针
2.直接地址访问 此时reference直接指向堆中具体的对象实例
通过直接指针有个好处就是在节省了一次指针定位的开销,但是坏处就是在对象地址发生修改(GC时的复制算法就会修改对象地址)时需要修改reference数据,句柄只需要修改句柄中指向的对象实例地址不需要修改reference数据。