句柄和直接指针

一、句柄访问方式:
使用句柄访问对象,会在堆中开辟一块内存作为句柄池,句柄中储存了对象实例数据(属性值结构体)的内存地址,访问类型数据的内存地址(类信息,方法类型信息),
对象实例数据一般也在heap中开辟,类型数据一般储存在方法区中。使用句柄访问的好处是句柄中储存的是稳定的对象地址,当对象被移动时候,只需要更新句柄中的对象实例部分的值即可,句柄本身不用被移动修改。

二、指针访问方式:
直接指针访问方式指reference中直接储存对象在heap中的内存地址,但对应的类型数据访问地址需要在实例中存储,使用直接指针的好处相对于句柄来讲,少了一次指针定位时间的开销,缺点是,当对象被移动时(如进行GC后的内存重新排列),对象的引用(reference)也需要同步更新。

三、HotSpot虚拟机使用的是直接指针的形式访问对象

猜你喜欢

转载自www.cnblogs.com/afraidToForget/p/12584866.html