首页 > 编程语言 >java对象的访问

java对象的访问

时间:2022-12-07 15:04:04浏览次数:37  
标签:java 指向 对象 句柄 访问 Java 指针


Java程序需要通过 JVM 栈上的引用访问堆中的具体对象。对象的访问方式取决 于 JVM 虚拟机的实现。
目前主流的访问方式有 句柄直接指针 两种方式。
指针: 指向对象,代表一个对象在内存中的起始地址。
句柄: 可以理解为指向指针的指针,维护着对象的指针。句柄不直接指向对象,而是 指向对象的指针(句柄不发生变化,指向固定内存地址),再由对象的指针指向对象的 真实内存地址。

句柄访问:Java堆中划分出一块内存来作为句柄池,引用中存储对象的句柄地址,而句柄中 包含了对象实例数据与对象类型数据各自的具体地址信息。优势:引用中存储的是稳定的句柄地址,在对象被移动(垃圾收集时移动对象是 非常普遍的行为)时只会改变句柄中的实例数据指针,而引用本身不需要修改。

java对象的访问_java

直接指针:如果使用直接指针访问,引用 中存储的直接就是对象地址,那么Java堆对象内 部的布局中就必须考虑如何放置访问类型数据的相关信息。优势:速度更快,节省了一次指针定位的时间开销。由于对象的访问在Java中非 常频繁,因此这类开销积少成多后也是非常可观的执行成本。HotSpot 中采用 的就是这种方式。

java对象的访问_句柄_02




 

标签:java,指向,对象,句柄,访问,Java,指针
From: https://blog.51cto.com/u_15905340/5919342

相关文章

  • java单例模式
    1.饿汉式2.懒汉式2.1 双重检查2.2 静态内部类2.3 枚举......
  • java虚拟机运行时数据区域
    一.线程私有1.程序计数器(ProgramCounterRegister) 当前线程所执行字节码的行号。2. Java虚拟机栈(JavaVirtualMachineStacks)Java方法执行的内存模型:每个方法在......
  • java面试(JVM)
     1. JMM的两个语义1)happensbefore:一个线程前一个操作对后一个操作可见,具有传递性。确保多线程执行程序结果不变。2)asifserial:无论怎么重排序,程序执行结果不变,即不......
  • <三>function函数对象类型的应用示例
    std::function是一组函数对象包装类的模板,实现了一个泛型的回调机制。function与函数指针比较相似,优点在于它允许用户在目标的实现上拥有更大的弹性,即目标既可以是普通函数......
  • Java语言标识符的命名规范(超详细讲解)
    前言在上一篇文章中,壹哥带领大家开始编写了第一个Java案例,在我们的cmd命令窗口中输出了”HelloWorld“这句话。并且我还给大家留了一个小作业,你做出来了吗?但是在上......
  • java拼接逗号的四种方式
    1.使用String.joinList<String>list=newArrayList<>(Arrays.asList("1","2","3","4","5"));Stringresult=String.join(",",list);System.out.println(result);......
  • Java数组和字符串的相互转换
    Java数组和字符串的相互转换字符串转换为数组JavaString类中的toCharArray()方法将字符串转换为字符数组,具体代码如下所示。Stringstr="123abc";char[]arr=......
  • JavaScript Promises, async/await
    newPromise()的时候,传一个executor给Promise.letpromise=newPromise(function(resolve,reject){//thisfunctionwillexecutesimmediately})这个函数......
  • JavaWeb商城项目的商品点赞功能模块的开发详
    一.JavaWeb商城项目的商品点赞功能开发过程记录1.1项目背景在完成内蒙古科技大学JavaWeb课程的大作业之后,本着练习的态度继续的写了一个功能:点赞功能。本需求看似简单,难......
  • 【每天一个java设计模式(完)】 - 四万字实现23种设计模式(附示例源码)
    什么是设计模式:​​【每天一个java设计模式(零)】-设计模式基本概念及七大设计原则​​创建型模式工厂模式:​​【每天一个java设计模式(一)】-工厂模式​​抽象工厂模式:......