java 虚拟机中对象访问详解

发布时间 - 2026-01-11 00:20:55    点击率:

java 虚拟机中对象访问详解

对象访问会涉及到Java栈、Java堆、方法区这三个内存区域。

如下面这句代码:

Object objectRef = new Object(); 


       假设这句代码出现在方法体中,"Object objectRef” 这部分将会反映到Java栈的本地变量中,作为一个reference类型数据出现。而“new Object()”这部分将会反映到Java堆中,形成一块存储Object类型所有实例数据值的结构化内存,根据具体类型以及虚拟机实现的对象内存布局的不同,这块内存的长度是不固定。另外,在java堆中还必须包括能查找到此对象类型数据(如对象类型、父类、实现的接口、方法等)的地址信息,这些数据类型存储在方法区中。

      reference类型在java虚拟机规范里面只规定了一个指向对象的引用地址,并没有定义这个引用应该通过那种方式去定位,访问到java堆中的对象位置,因此不同的虚拟机实现的访问方式可能不同,主流的方式有两种:使用句柄和直接指针。             

             句柄访问方式:java堆中将划分出一块内存来作为句柄池,reference中存储的就是对象的句柄地址,而句柄中包含了对象实例数据和类型数据各自的具体地址信息。

指针访问方式:reference变量中直接存储的就是对象的地址,而java堆对象一部分存储了对象实例数据,另外一部分存储了对象类型数据。

这两种访问对象的方式各有优势,使用句柄访问方式最大好处就是reference中存储的是稳定的句柄地址,在对象移动时只需要改变句柄中的实例数据指针,而reference不需要改变。使用指针访问方式最大好处就是速度快,它节省了一次指针定位的时间开销,就虚拟机而言,它使用的是第二种方式(直接指针访问)。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# Java虚拟机  # 对象访问  # 详解Java虚拟机  # 句柄  # 的是  # 将会  # 堆中  # 这部  # 这句  # 不需要  # 出现在  # 希望能  # 作为一个  # 各有  # 只需要  # 这块  # 有两种  # 涉及到  # 速度快  # 谢谢大家  # 到此  # 这两种  # 这三个 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  Python自然语言搜索引擎项目教程_倒排索引查询优化案例  Laravel如何实现模型的全局作用域?(Global Scope示例)  如何快速搭建支持数据库操作的智能建站平台?  简历在线制作网站免费版,如何创建个人简历?  Laravel DB事务怎么使用_Laravel数据库事务回滚操作  网站页面设计需要考虑到这些问题  如何利用DOS批处理实现定时关机操作详解  动图在线制作网站有哪些,滑动动图图集怎么做?  详解Android——蓝牙技术 带你实现终端间数据传输  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  中山网站制作网页,中山新生登记系统登记流程?  如何制作一个表白网站视频,关于勇敢表白的小标题?  Laravel如何处理表单验证?(Requests代码示例)  Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】  高端网站建设与定制开发一站式解决方案 中企动力  智能起名网站制作软件有哪些,制作logo的软件?  Python面向对象测试方法_mock解析【教程】  Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】  Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试  Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程  google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤  UC浏览器如何设置启动页 UC浏览器启动页设置方法  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】  javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】  Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解  免费网站制作appp,免费制作app哪个平台好?  Laravel路由怎么定义_Laravel核心路由系统完全入门指南  Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】  Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置  Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解  原生JS获取元素集合的子元素宽度实例  Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理  Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程  Firefox Developer Edition开发者版本入口  详解CentOS6.5 安装 MySQL5.1.71的方法  如何确保FTP站点访问权限与数据传输安全?  Python函数文档自动校验_规范解析【教程】  Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)  PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】  如何自定义建站之星网站的导航菜单样式?  Laravel怎么判断请求类型_Laravel Request isMethod用法  Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤  如何快速搭建高效服务器建站系统?  微信小程序 input输入框控件详解及实例(多种示例)  如何快速查询网址的建站时间与历史轨迹?  Laravel怎么使用Blade模板引擎_Laravel模板继承与Component组件复用【手册】  Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】  如何在阿里云完成域名注册与建站?