JVM 对象的访问方式

对象访问的方式

Java程序会通过栈上的reference数据来操作堆上的具体对象。

  • 句柄法

    Java堆中将可能会划分出一块内存来作为句柄池,reference中存储的就是对象的句柄地址,而句柄中包含了对象实例数据与类型数据各自具体的地址信息。移动的时候不需要改reference的地址

  • 直接指针法

    reference中存储的直接就是对象地址,如果只是访问对象本身的话,就不需要多一次间接访问的开销(跳过访问句柄),速度快

这两种对象访问方式各有优势。

使用句柄来访问的最大好处就是 reference 中存储的是稳定句柄地址,在对象被移动(垃圾收集时移动对象是非常普遍的行为)时只会改变句柄中的实例数据指针,而 reference 本身不需要被修改。

使用直接指针来访问最大的好处就是速度更快,它节省了一次指针定位的时间开销,由于对象访问在 Java 中非常频繁,因此这类开销积少成多也是一项极为可观的执行成本。

HotSpot 虚拟机主要使用直接指针来进行对象访问。

相关推荐
忘记92619 小时前
jvm性能调优
jvm
C++chaofan21 小时前
Java 并发编程:synchronized 优化原理深度解析
java·开发语言·jvm·juc·synchronized·
sww_102621 小时前
JVM基础学习
jvm·学习·测试工具
芒克芒克1 天前
深入浅出JVM的运行时数据区
java·开发语言·jvm·面试
月明长歌1 天前
JavaThread类详解核心属性、常用方法与实践
java·开发语言·jvm
kaico20181 天前
JVM的垃圾回收
开发语言·jvm
zfj3211 天前
java垃圾收集 minorgc majargc fullgc
java·开发语言·jvm·gc·垃圾收集器
烟沙九洲1 天前
JVM 堆内存分代
java·jvm
独自破碎E1 天前
JVM由哪些部分组成?
jvm
曹轲恒2 天前
JVM之垃圾回收算法(GC)
jvm·算法