`
Turandot
  • 浏览: 51595 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

Java 对象访问

阅读更多

                                                                   Java对象访问

 

     如果在方法中出现如下这句代码:Object obj = newObject();那Object obj这个引用变量会存放在java栈的本地变量表中,作为一个reference类型数据,它指向了一个对象的引用,即指向堆中对象起始地址的引用指针或一个代表对象的句柄,不同的虚拟机有不同的实现,而new Object()会在java堆中分配一块内存,用于存放Object类型的实例数据值,这块内存的大小是不固定的。此外,在java堆中还包含了能查找到此对象类型数据(对象类型、父类[当然Object没有父类]、实现的接口、方法等,这些类型数据存储在方法区中)的地址信息,即指向方法区的一个指针。reference类型指向了一个对象的引用,而不同的虚拟机在确定这个的具体位置时,有不同的实现,主流的有两种方式:

 

1、句柄访问方式:java堆中将会划分出一块内存来作为句柄池,reference中存放的就是对象的句柄地址,而句柄中包含了对象实例数据和类型数据的地址信息,如下图所示:


 

 

2、直接指针访问方式:reference中直接存放的就是对象的地址,如下图所示:

 

  

  

句柄访问方式的优点是reference中存放的是稳定的句柄地址,在对象被移动(垃圾收集时移动对象是很普遍的)时只会改变句柄中的实例数据指针,而reference本身不需要被修改。

         直接指针访问方式的优点是速度快,它节省了一次指针定位的时间开销,由于对象的访问在java中非常频繁,因此这类开销的执行成本也很高。Sun的HotSpot使用的就是这种对象访问方式。

1
1
分享到:
评论

相关推荐

    用java访问domino对象

    用java访问domino对象,用java访问domino对象,用java访问domino对象

    flex访问java对象

    flex访问java对象,文档中为一个简单的ActionScript远程访问Java对象的例子

    java面向对象技术

    java 面向对象技术的基础入门 类的继承 访问控制 方法覆盖

    Java面向对象编程思想

    Java 的核心是面向对象编程.所有的java程序都是面向对象的。 以前总听老师说c语言是面向过程的,c++和java是面向对象的,这些糊涂老师却从来不说明何为面向过程,...面向对象的程序实际上是用数据控制对代码的访问。

    钻研JAVA虚拟机 全面掌握JVM JAVA虚拟机深入浅出实战课程 视频附带课程代码

    ├─(2) 0802_【掌握】Java对象访问模式.mp4 ├─(3) 0803_【掌握】JIT即时编译器.mp4 ├─(4) 0804_【掌握】JVM堆内存结构.mp4 ├─(5) 0805_【掌握】新生代内存管理.mp4 ├─(6) 0806_【掌握】老年代内存管理.mp4 ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

    第2章 Java对象持久化技术概述  2.1 直接通过JDBC API来持久化实体域对象  2.2 ORM简介  2.2.1 对象-关系映射的概念  2.2.2 ORM中间件的基本使用方法  2.2.3 常用的ORM中间件  2.3 实体域对象的其他持久化模式...

    类与对象-java实验报告

    1) 熟悉Java中类的设计; 2) 设计类的数据域与方法; 3) 设计类与类之间的关系 4)使用设计的类 实验内容 对平面几何中的各种基本图形使用面向对象的设计方法建模,需要设计的类包括:点、直线、三角形、矩形、...

    java对象实体类属性字段对比变化过程

    Java对象实体类属性字段对比变化过程是指在一个Java对象实体类的生命周期中,其属性字段的变化情况。这种变化过程通常涉及到对象的创建、使用和销毁等阶段。 在对象的创建阶段,Java对象实体类会根据预设的属性字段...

    简单对象访问协议实验

    简单对象访问协议实验

    Java反射机制,通过对象访问调用类的私有成员或方法

    Java反射机制,万物皆对象,class也是一个类的对象,通过类类型,反射获得类的成员属性,构造方法,成员方法,并调用类中的方法,也可以调用私有方法。

    免费开源!!一个 Java 序列化/反序列化库,用于将 Java 对象转换为 JSON 并返回

    Gson 是一个 Java 库,可用于将 Java 对象转换为其 JSON 表示形式。它还可用于将 JSON 字符串转换为等效的 Java 对象。Gson 可以处理任意 Java 对象,包括您没有源代码的现有对象。 有一些开源项目可以将 Java 对象...

    实验三:Java类与对象

    本次实验进一步学习了Java的相关知识,深入理解了面向过程与面向对象语言的区别,了解了面向对象语言的三大特征,掌握类的声明和构造方法,掌握了对象的创建方法与创建机制,掌握了成员变量、类变量和局部变量区别,...

    jdo-java数据对象

    Java数据对象(Java Data Objects,JDO)是一个应用程序接口(API),它是Java程序员能够间接地访问数据库,也就是说,不需使用直接的结构化查询语言(SQL)语句。JDO是作为Java数据库连接(JDBC)的一个补充来介绍的,而...

    Java虚拟机中冷对象的研究_骆凡.caj

    和对象集合,它们为了快速访问而进行预加载 , 但它们可能包括很少被引用的对象。通过建立活跃性映射表去跟踪堆对象中的引用活 跃性,将其与设定的 t cold 相比较确定冷对象来对内存对象进行评估和识别,建立的访 问...

    JAVA面向对象详细资料

    Java面向对象 1 1 学习方法与要求 1 2 面向对象语言与面向过程语言的区别 7 3 面向对象?什么对象? 8 4 什么是类? 9 5 如何创建一个类Class? 10 6 如何使用类创建对象 10 7 引用与实例 11 8 实例属性与实例方法 ...

    Java对象与内存控制

    从内存运行的角度分析面向对象中类、对象的细节,包括Java对类变量、实例变量的初始化细节,内存中子类实例的实例变量的存储以及程序如何访问它们,父、子类的类变量的存储以及程序如何访问它们。

    用Hibernate对象持久化服务简化Java数据库访问.pdf

    用Hibernate对象持久化服务简化Java数据库访问 用Hibernate对象持久化服务简化Java数据库访问

    Formula One e.Report Engine Developer License--灵活的10

    ·由数据源生成报表 从应用程序中创建的Java对象访问和生成报表。同样从数据库,文本文件,XML,或EJB来访问和生成报表。 ·在强大易用环境中设计报表 包括强健的可视化设计环境,并具有直观的向导,使您能够在几...

    面向对象设计java信息系统部署

    面向对象设计java信息系统部署,软件的MVC模型 JDBC访问数据流程 (1)加载驱动程序 (2)连接数据库 (3)创建SQL执行器 (4)执行SQL语句 (5)处理查询结果 (6)断开与数据库的连接

    JAVA面向对象的思维方式

    知道并懂得JAVA面向对象的思维方式,举一个非常简单的例子:假使现在需要写一个网页计数器,客户访问一次页面,网页计数器加1,计数器是这样来访问的

Global site tag (gtag.js) - Google Analytics