当前位置: 首页 > 面试题库 >

对象的访问定位的两种方式

陈胤
2023-03-14
本文向大家介绍对象的访问定位的两种方式相关面试题,主要包含被问及对象的访问定位的两种方式时的应答技巧和注意事项,需要的朋友参考一下

java对象在访问的时候,我们需要通过java虚拟机栈的reference类型的数据去操作具体的对象。由于reference类型在java虚拟机规范中只规定了一个对象的引用,并没有定义这个这个引用应该通过那种方式去定位、访问java堆中的具体对象实例,所以一般的访问方式也是取决与java虚拟机的类型。目前主流的访问方式有通过句柄和直接指针两种方式。

1.句柄访问

使用句柄访问方式,java堆将会划分出来一部分内存去来作为句柄池,reference中存储的就是对象的句柄地址。而句柄中则包含对象实例数据的地址和对象类型数据(如对象的类型,实现的接口、方法、父类、field等)的具体地址信息。下边我以一个例子来简单的说明一下:

Object obj = new Object();

Object obj表示一个本地引用,存储在java栈的本地便变量表中,表示一个reference类型的数据。

new Object()作为实例对象存放在java堆中,同时java堆中还存储了Object类的信息(对象类型、实现接口、方法等)的具体地址信息,这些地址信息所执行的数据类型存储在方法区中。

2. 直接指针访问


如果使用指针访问,那么java堆对象的布局中就必须考虑如何放置访问类型的相关信息(如对象的类型,实现的接口、方法、父类、field等),而reference中存储的就是对象的地址。

这两种访问方式各有利弊,使用句柄访最大的好处是reference中存储着稳定的句柄地址,当对象移动之后(垃圾收集时移动对象是非常普遍的行为),只需要改变句柄中的对象实例地址即可,reference不用修改。

使用指针访问的好处是访问速度快,它减少了一次指针定位的时间开销,由于java是面向对象的语言,在开发中java对象的访问非常的频繁,因此这类开销积少成多也是非常可观的,反之则提升访问速度。

 类似资料:
  • 本文向大家介绍JS访问对象两种方式区别解析,包括了JS访问对象两种方式区别解析的使用技巧和注意事项,需要的朋友参考一下 可以使用下面两种方式访问对象的属性和方法 1.对象名.属性名    对象名.方法名() 2.对象名["属性名"]   对象名"方法名" 对于已经存在的属性和方法,用.和用[]得到的结果一致、 对于不存在(未定义)的属性和方法,用.会创建这个新的属性或方法,而用[]的方式访问不会创

  • 本文向大家介绍JavaScript对象的属性可以通过几种方式访问​​?,包括了JavaScript对象的属性可以通过几种方式访问​​?的使用技巧和注意事项,需要的朋友参考一下  可以通过两种方式访问对象属性。一个是.property,另一个是[property]。 语法1 语法2 为了更好地理解,让我们看下面的示例。 在下面的示例中,定义了一个名为“ person”的对象,并以点符号访问其属性。

  • 本文向大家介绍JavaScript中定义对象原型的两种使用方法,包括了JavaScript中定义对象原型的两种使用方法的使用技巧和注意事项,需要的朋友参考一下 第一种: 第二种: 个人比较喜欢第二种;第二种可以的原型中可以拓展各种方法,用起来比较顺手。 例如可以写: 以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持呐喊教程!

  • 一、对象的创建 1.虚拟机遇到一个new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用; 2.检查这个符号引用代表的类是否已经被加载,解析和初始化过。如果没有,那必须先执行响应的类加载过程; 3.在类加载检查功通过后,为新生对象分配内存。对象所需的内存大小在类加载完成后便可完全确定。 二、对象的内存布局 分为3个区域:对象头,实例数据,对齐填充。 对象头: 包括两部分信息

  • 本文向大家介绍JavaScript中子对象访问父对象的方式详解,包括了JavaScript中子对象访问父对象的方式详解的使用技巧和注意事项,需要的朋友参考一下 在传统面向对象的编程语言里,都会提供一种子类访问父类的特殊语法,引文我们在实现子类方法往往需要父类方法的额外辅助。在这种情况下,子类通常会调用父类中的同名方法,最终以便完成工作。 javascript虽然没有类似上述的特殊语法,但我们可以造

  • 问题内容: 首先看下面的JavaScript对象 我想将值设置为与相同,因此我将对象值放在前面,但它对我不起作用,我也使用过,但仍然失败。我的问题是如何访问对象内对象的属性。 一些用户沉迷于问“您想做什么或发送脚本等”,对于那些人来说,答案很简单:“我想访问对象内的对象属性”,上面提到了脚本。 任何帮助将不胜感激 :) 问题答案: 使用 对象文字 语法时,不能在初始化期间引用对象。创建对象后,需要