一、简介
java 对象访问的方式有两种:句柄访问和直接访问。
句柄访问:在堆内存中划分一个区域存放句柄池,java 栈中存储的refrence 指向的就是句柄池的地址,句柄池里存放的是java 对象实例的地址,和java 类型数据的具体信息。
直接访问:refrence 里存储的是堆中java 具体实例对象的地址,而堆中java 具体的实例对象自关联到方法区中的类型数据具体信息。
二、示意图
三、区别与联系
句柄访问:
优点:垃圾回收时对象时,refrence 引用指针不变,只需改变对象实例数据的指针。
缺点:定位速度慢
直接引用
优点:定位速度快,节省一次指针定位的开销。
缺点:对象回收时,指针都需要重新定位,开销大。