
Java是一门面向对象的语言,在使用的过程中经常会创建各种类型的对象,而创建一个对象仅需要一个new关键字就可以,那么在虚拟机中对象创建又是怎么一个过程?
建立对象是为了访问对象,我们的Java程序需要通过栈上的reference数据来来操作对象的具体对象。由于Java虚拟机规范中只规定了一个指向对象的引用,并没有定义这个应用采用何种方式去定位、访问堆中的对象的具体位置,所以对象的访问方式取决于虚拟机的实现方式。目前主流的方式有使用句柄和直接指针两种:


这两种对象访问方式各有优势,使用句柄访问最大的好处是reference中存储的是稳定句柄地址,在对象被移动时(辣鸡回收时会移动对象)只需要改动句柄中实例数据的指针,而reference不需要修改。 而使用直接指针的方式最大的优势是访问速度更快,他节省了一次指针定位的开销,由于对象的访问在Java中非常频繁,因此这类开销积少成多后也是一项非常可观的执行成本。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。