zoukankan      html  css  js  c++  java
  • 对象访问方式

    语句 Object obj = new Object()

    Object obj 中obj是一个对象引用,这部分数据会反映到java虚拟机栈中的本地变量表(局部变量表)中,作为一个reference数据类型出现。
    new Object()语义反映到java堆中,形成一块存储Object类型所有实例数据值的结构化内存。除了实例数据值,java堆中还存储了指向对象类型数据(对象类型 /接口 /方法 字段)的地址信息。而这些对象类型数据存储在方法区中。

    对象访问方式

    java虚拟机栈存储的reference数据类型只是一个指向对象的引用,如何定位到java堆中对象的具体位置。不同的虚拟机对象访问方式不同,主流的两种方式是:(1)使用句柄 (2)使用指针
    • 使用句柄
        在java堆中划分一块内存作为句柄池,java栈中的reference数据存储的就是java堆中对象句柄的地址。句柄包括了 对象实例数据的具体地址(java堆中)和对象类型数据(方法区中)
    • 指针直接访问
        java栈中的reference直接存储的就是对象实例的地址。
    优点对比
    1、使用句柄的优点:reference存储的是句柄的地址,是比较稳定的,在对象移动时(垃圾收集时移动对象)只需要修改句柄中指向对象实例的地址,而reference本身不需要修改。
    2、使用指针的优点:reference直接存储的是对象实例的地址,访问速度更快。相对于使用句柄,减少了一次指针定位的时间开销,在频繁的访问情况下,使用指针的速度快很多。
  • 相关阅读:
    笔记44 Hibernate快速入门(一)
    tomcat 启用https协议
    笔记43 Spring Security简介
    笔记43 Spring Web Flow——订购披萨应用详解
    笔记42 Spring Web Flow——Demo(2)
    笔记41 Spring Web Flow——Demo
    Perfect Squares
    Factorial Trailing Zeroes
    Excel Sheet Column Title
    Excel Sheet Column Number
  • 原文地址:https://www.cnblogs.com/xiaojianfeng/p/9353469.html
Copyright © 2011-2022 走看看