Closed rockcoder23 closed 6 years ago
在不同的的jvm中,实现对象的访问方式会有所不同,其中主流的访问方式有两种:使用句柄和直接指针。
1. 句柄方式:
jvm会在堆中划分一部分内存存放句柄,称为句柄池,reference引用存储着句柄的地址,而句柄中包含了对象实例数据的指针和对象类型数据指针(指向方法区中对象类型信息)
使用句柄方式的优点是,reference中存放的是句柄的地址,堆中对象移动后,句柄地址变化,而reference中的内容不变。
2. 直接指针方式:
在直接指针方式中,reference中直接存放着对象的地址,而对象中存放着对对象类型数据的指针。
直接指针方式的优点是访问速度比句柄方式快,因为减少了一次指针的定位的开销。这在java中对象访问频繁的情况能节约很大的执行成本。Sun HotSpot 使用的是直接指针方式。
add blog
在不同的的jvm中,实现对象的访问方式会有所不同,其中主流的访问方式有两种:使用句柄和直接指针。
1. 句柄方式:
jvm会在堆中划分一部分内存存放句柄,称为句柄池,reference引用存储着句柄的地址,而句柄中包含了对象实例数据的指针和对象类型数据指针(指向方法区中对象类型信息)
使用句柄方式的优点是,reference中存放的是句柄的地址,堆中对象移动后,句柄地址变化,而reference中的内容不变。
2. 直接指针方式:
在直接指针方式中,reference中直接存放着对象的地址,而对象中存放着对对象类型数据的指针。
直接指针方式的优点是访问速度比句柄方式快,因为减少了一次指针的定位的开销。这在java中对象访问频繁的情况能节约很大的执行成本。Sun HotSpot 使用的是直接指针方式。