深入理解java虚拟机(二) 对象访问

Object obj = new Object();

      1.object obj 将会出现在java虚拟机栈的本地变量表中,以引用的类型出现。

       2.new Object()  会在java堆中开辟一块内存,用来存放Object类型的所有实例数据,还必须包括能查到此对象类型(对象类型,父类,方法等)数据的地址,这些信息存放在方法区中。

       java引用访问对象的两种方式:

       1.使用句柄

             深入理解java虚拟机(二) 对象访问

                在java堆中划分一块区域用作句柄池,java在虚拟机栈中存放的引用类型里面是对象的句柄地址,句柄里面包含了对象实例数据和对象数据的具体地址。

        2.直接指针

              深入理解java虚拟机(二) 对象访问

              java堆里面放置对象实例数据和对象类型的数据地址。

              hotspot里面使用的是直接指针的方式。

              这两种方式各有优势,句柄方式优点是引用里面是稳定的地址,对象地址改变只用改变句柄里面的地址就行了。直接指针的方式的优点是快,效率高。