JVM 对象的访问方式

对象访问的方式

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

  • 句柄法

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

  • 直接指针法

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

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

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

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

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

相关推荐
czlczl200209253 小时前
MySQL 基于 GTID 的 Binlog 主从同步机制
java·jvm·mysql
CLX05054 小时前
C#怎么实现全局异常过滤器_C#如何捕获控制器报错【核心】
jvm·数据库·python
czhc11400756635 小时前
modbus 512 断线重连 db browser for sqlite
jvm
LJianK17 小时前
乐观锁算线程同步吗?
java·开发语言·jvm
何故染尘優7 小时前
面试八股文-01
java·jvm·面试
青柠代码录8 小时前
【JVM】面试题-Java中有哪些引用类型
java·jvm
cms小程序插件【官方】8 小时前
pbootcms版AI自动发文插件升级到3.0版本,支持多组关键词
jvm·人工智能
AI人工智能+电脑小能手8 小时前
【大白话说Java面试题 第47题】【JVM篇】第7题:Young GC 和 Full GC 分别采用什么算法?
java·jvm·后端·算法·面试
青柠代码录9 小时前
【JVM】面试题-Parallel 回收器
jvm
p***76989 小时前
docker compose安装mindoc 后添加https访问反向代理配置教程
jvm·docker·https