JVM学习–总索引
JVM学习–对象的访问定位
Java建立的对象是放在堆中的,我们是通过栈中的引用去访问堆中的对象的。
目前虚拟机有两种方通过引用去访问堆中的对象,一种是句柄访问,另一种是直接指针访问。
句柄访问
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/99bbfa6f2182b8caf4f0c91301ab0b85.png)
此时,Reference 保存的是句柄地址。
使用这种方式的好处是,当进行垃圾回收后,如果对象被移动,只需要改变句柄池中对象实例指针地址,Reference不用修改。
直接指针访问
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/70ed8457f978e81322b54ee24621674b.png)
此时,Reference 保存的是对象地址。
使用这种方式的好处是,访问对象的速度更快,因为少了句柄访问对象这个中间过程。
Hotspot使用的是直接指针访问。