java对象访问模式

1.  java对象访问模式

为什么我们要引入java对象访问模式,我们知道Object obj = new Object();但是里面的具体细节,我们还不是特别了解。

     分析:Object obj 其实就是声明一个对象。保持在栈内存之中,也保存了堆内存的引用

                new Object() 其实是实例化对象,该对象保存在堆内存之中。

但是我们应该知道obj如何得到实例化对象的地址?

引用数据类型分为两种模式

句柄访问:

JAVA堆中将会划分出来一块内存作为句柄池,reference中就是存储了对象的句柄地址,而句柄中包含了对象实例数据和类型数据各自的具体地址信息。

    使用句柄访问的最大好处是reference中存储的是稳定的句柄地址,在对象被移动时,只会改变句柄中的实例数据指针,而reference本身不需要被修改。


直接指针访问:

 相比较句柄的访问方式,JAVA堆中不会单独划分内存,reference中直接存储了对象地址,而对象中包含了对象类型数据的地址信息。

    使用直接指针的最大好处就是速度更快,节省了一次指针定位需要的时间开销,由于JAVA对象访问十分频繁,这类开销积小成多后也是一项非常可观的执行成本。Sun HotSpot虚拟机使用的就是这种访问方式。

  • 该模式没有句柄池的概念
  • 在JVM中是直接利用对象保存模式,即直接保存具体的对象
  • 该策略省略了句柄到对象间的查找,而后该对象直接进行java方法区的调用

为什么java使用直接指针访问?(正在研究)

   

猜你喜欢

转载自blog.csdn.net/weixin_41629878/article/details/85242526