建立对象是为了访问对象,Java程序经过栈的引用(reference)数据来操做堆上的对象。因为reference类型在Java虚拟机规范中只规定了一个指向对象的引用。并无规定经过该引用怎么定位,访问堆中的对象。具体须要看虚拟机的实现。布局
一个指向对象的引用
两种访问方式:spa
Java堆中会划分一个句柄池,reference存储的就是对象的句柄地址,而句柄中存放的是对象的实例数据和类型数据的地址信息。
Java堆对象布局就必须考虑如何存放访问类型数据的相关信息,reference存储的就是对象的地址。