美文网首页
Java中对象的访问方式

Java中对象的访问方式

作者: gigglesoso | 来源:发表于2020-07-17 15:28 被阅读0次

Java中我们创建一个对象

Object obj = new Object();

其中obj作为对象的引用是分配在我们的栈内存中的,而我们的对象实例是分配在我们的堆内存中的。
对象实例其实包含了两部分,

  1. 存储Object对象所有实例数据的结构化内存
  2. 存储Object类型信息的指针,其实就是指向该对象对应的Class对象的地址指针

其中我们的obj引用在虚拟机规范里只规定了一个指向对象的引用,并没有指定需要哪种实现方式,因此不同的虚拟机有不同的实现方式,主流的有两种:

  1. 通过句柄
  1. 通过直接指针

这两种方式各有各的优缺点:

  • 使用句柄的最大优点就是引用指向的是一个稳定的句柄地址,对象的移动只会改变句柄中的实例数据的地址,而reference本身不需要更改;
  • 使用直接指针的好处是速度快,它节省了一次指针寻址的时间开销,由于java中对象的寻址很频繁,因此累加起来这也是一笔不少的开销,hotspot虚拟机是使用第二种方式访问对象的。

以上内容参考了<<深入理解java虚拟机>>。

相关文章

  • Java中对象的访问方式

    Java中我们创建一个对象 其中obj作为对象的引用是分配在我们的栈内存中的,而我们的对象实例是分配在我们的堆内存...

  • Spark笔记-001-GC

    我真的不懂Java... GC急速入门 Java对象在内存中的结构 如何确定对象可以被回收java通过引用访问堆中...

  • Java的3种代理模式

    Java的代理模式简介 代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对...

  • Java中对象的访问定位

    我们前面有说过一个对象是如何创建的,那么创建之后具体怎么使用呢? Java程序会通过栈上的reference数据来...

  • Java内存区域

    主要面试题:介绍下Java内存区域Java对象创建的步骤(五步,需要知道JVM分别做了什么)对象访问定位的两种方式...

  • HotSpot源码结构

    java对象的访问定位

  • 知识点

    js访问对象属性两种方式在javascript中我们通常使用.来访问对象的属性,那么也可以使用[ ]来访问对象属性...

  • 对象访问

    对象访问 在Java语言中,对象访问是如何进行的?即便是最简单的访问,也会涉及Java栈、Java堆、方法区这三个...

  • java的访问修饰符

    一. Java中的访问修饰符 Java面向对象的基本思想之一是封装细节并且公开接口。Java语言采用访问控制修饰符...

  • Kotlin-强大的委托

    委托也叫代理,是一种可以以代理方式控制目标对象的访问,设计模式中成为-代理模式。 Java中,我们实现一个代理模式...

网友评论

      本文标题:Java中对象的访问方式

      本文链接:https://www.haomeiwen.com/subject/oevghktx.html