首页 > 其他分享 >对象的访问定位

对象的访问定位

时间:2022-10-24 22:38:08浏览次数:53  
标签:定位 Java reference 对象 句柄 访问 指针


​ 建立对象是为了使用对象,Java程序需要通过栈上的reference数据来操作堆上的具体对象。由于reference类型在Java虚拟机规范中只规定了一个指向对象的引用,并没有定义这个引用应该通过何种方式去定位、访问堆中的对象的具体位置,所以对象访问方式也是取决于虚拟机实现而定的。目前主流的访问方式有使用​​句柄​​​和​​指针​​两种。

1. 如果使用句柄访问的话,那么Java堆中将会划分出一块内存来作为句柄池,reference中存储的就是对象的句柄地址,而句柄中包含了对象实例数据与类型数据各自的具体地址信息。

对象的访问定位_jvm

  1. 如果使用直接指针访问,那么Java堆对象的内存布局就必须考虑如何放置访问类型数据的相关信息,而reference中存储的就是对象地址。

对象的访问定位_数据_02

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

使用直接指针访问方式的最大好处就是速度更快,它节省了一次指针定位的时间开销,由于对象的访问在Java中非常频繁,因此这类开销积少成多后也是一项非常可观的执行成本。虚拟机Sun HotSpot而言,它是使用第二种方式进行对象访问的,但从整个软件开发的范围来看,各种语言和框架使用句柄来访问的情况也十分常见。

实时内容请关注微信公众号,公众号与博客同时更新:程序员星星

对象的访问定位_数据_03


标签:定位,Java,reference,对象,句柄,访问,指针
From: https://blog.51cto.com/u_7841967/5791468

相关文章

  • 判断对象是否存活
    引用计数法互相引用会无法回收可达性分析法通过一系列的GCRoots的对象作为起始点,从这些节点开始向下搜索,搜索走过的路径称为引用链(ReferenceChain),当一个对象到GCRoots......
  • 对象的创建过程
    虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须执......
  • JavaScript学习--History&Location对象
    History:历史记录获取:window.history.方法();window可省略方法:back()加载history列表的前一个urlforward()加载history列表的下一个url Location:地址栏对象获取win......
  • CSS盒子模型与定位
    盒子模型与定位元素简单分三大类:块级元素,内联元素(行级),内联块级元素块级元素:元素宽度在不设置的情况下,是它本身父容器的100%常见的块级元素有:<div>,<p>,<h1>~<......
  • CSS定位布局
    CSS定位布局static静态定位,也是position的默认值relative.box2{position:relative;Left:15px;top:15px;}相对定位,但是元素所占空间仍在原位absoluteposi......
  • 命令式对象配置—yaml书写
    一、配置文件中字段查询#比如要写pod的yaml文件,那么我们先来查询下编写pod文件,有哪些字段可以书写kubectlexplainpod二、示例:创建一个nginx应用要求:命名空间名为......
  • day18面向对象
    概述:面向对象是一种编程思想(oop),是对面向过程的一个抽取和简化。主要是以类构建对象,来存储对应的行为及属性,将抽取的行为作为方法,对应的属性为属性,所有内容都可以抽取为一个......
  • CPI 访问需验证的HTTP接口
    CPI访问外围系统接口时,有时需要先访问验证接口,获取AccessToken或得到账密,然后访问具体接口时,将获取到的验证结果传入具体接口进行访问1、OAuth2.0 AccessToken方式1.1、......
  • ABB AC900F学习笔记155:显示访问1
    ABBAC900F学习笔记155:显示访问1_来自金沙江的小鱼_新浪博客(sina.com.cn)上面是我在新浪博客笔记的链接,为了避免可能的服务关闭,我在这里也记录一份在FreelanceOperatio......
  • SYS.WRI$_ADV_OBJECTS对象清理-12Cand19C
    有时候我们的sysaux表空间增长很快,通过查询我们发现是SYS.WRI$_ADV_OBJECTS对应太大导致的,那么这个时候我们就需要清理该表SQL>COLSEGMENT_NAMEFORMATA30SQL>COL......