对象的访问方式由虚拟机的实现而定,目前最主流的访问方式有句柄和直接指针两种
注:以下变量引用就是本地变量表(在jvm虚拟机栈中)中的reference引用
1、句柄
jvm堆中会有一块内存作为句柄池,变量引用的地址就是对象在句柄池中的句柄地址。
好处:
变量引用的地址将是稳定的句柄地址,当对象在移动时,只会改变句柄池中的实例数据指针,而变量引用的地址不会修改。
2、直接指针
变量引用的地址就是对象在堆中的地址。
好处:
速度会更快,因为他节省了一次指针定位的时间开销。