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加速网络【指南】
如何在阿里云完成域名注册与建站?

