Java对象在虚拟机中有两种访问方式:

通过句柄访问对象

Java堆中有一块内存为句柄池

Java本地栈中的reference存储的是句柄池中的句柄地址

句柄中包含了对象实例数据地址(堆中的实例池)和对象类型数据地址(方法区)


通过指针访问对象

reference中存储的是对象地址

对象中存储类型数据地址


优缺点:

句柄的存储比较稳定,对象的移动不影响reference

指针的好处是速度快,节省了一次指针定位的时间开销