如何在内存中查找对象的起始地址呢?
在Java虚拟机规范中规定了也只规定了一个指向对象的引用
并没有规定如何去实现这个引用
所以常见的实现方式分为了使用句柄和直接指针两种
句柄引用:在Java堆中划分出一块内存来作为句柄池
reference中存储的就是对象的句柄地址,句柄中分别保存了对象的实例数据和类型数据
这种方式占用了额外的内存空间,但是更利于修改各种类型的数据
直接指针则是
reference中存储的是对象地址
具体存储类型数据则没有完全规定
直接指针的方式更加利于查找速度,常见的HotSpot就是基于第二种方式直接指针的引用保存