`

java对象的访问方式

阅读更多

java需要通过栈上的reference数据来操作堆上的具体对象,目前主流有两种方式:
1.使用句柄
  使用句柄的话,java堆将会划分一块内存来作为句柄池,reference中存储的就是对象的句柄地址,而句柄中包含了对象实例数据与对象类型数据各自的具体地址信息
2.直接指针

  reference中存储的直接就是对象地址

两种方式各有优势,使用句柄访问最大好处是reference中存储的稳定的句柄地址,当对象被移动时(垃圾回收机制移动对象非常普遍)只会改变句柄中的实例数据指针,而reference本身不需要修改。

使用直接指针访问最大好处是速度更快,节省了一次指针定位的时间开销,由于对象的访问十分频繁,因此此类开销积少成多之后也是一项非常可观的执行成本,sun HotSpot使用的直接指针方式访问对象,但从整个软件开发范围来看,各种语言和框架使用句柄来访问也十分常见。

 

  • 大小: 55.2 KB
分享到:
评论

相关推荐

    计算java对象大小

    这篇博客文章可能探讨了如何通过不同的工具和技术来估算Java对象在内存中的占用空间。 首先,Java对象的大小不是固定不变的,它取决于对象的类结构,包括类中的属性数量、类型以及虚拟机的实现。每个对象都会有一个...

    Java面向对象程序设计

    10. **集合框架**:Java集合框架包括List、Set、Queue和Map等接口及其实现类,如ArrayList、HashSet、LinkedList等,提供了一种高效管理对象数组的方式。 11. **内部类**:Java支持类的嵌套,包括成员内部类、局部...

    java 对象 内存 大小

    当我们谈论“Java对象内存大小”时,我们通常指的是一个Java对象在内存中占据的空间,包括对象头、实例字段以及可能的对齐填充。这个知识点对于开发高效缓存系统尤其重要,因为缓存需要精确管理内存来最大化存储效率...

    flex访问java对象

    根据给定的信息,本文将详细解释如何通过Flex访问Java对象,并提供一个具体示例来帮助理解整个过程。本文主要分为以下几个部分:环境搭建、Java类编写、配置文件编写、Flex应用编写以及最终运行效果。 ### 一、环境...

    JAVA对象模块.rar

    Java对象模块是Java编程中的核心概念,它代表了程序中的数据和行为的组合。在Java中,对象是类的实例,而类则是对象的蓝图。理解这一模块的关键在于掌握类、对象、属性和方法等基本概念。 1. 类(Class): 类是...

    JAVA类与对象及数组习题

    JAVA类与对象及数组习题 JAVA类和对象及数组是JAVA编程语言的基础概念。下面是关于JAVA类和对象及数组的习题,涵盖了构造方法、继承、多重继承、变量声明、数组初始化等方面的知识点。 1. 构造方法的调用方式: ...

    JAVA创建对象的四种方法

    - 反射机制是 Java 中的一种机制,它可以在运行时检查和修改类的结构和行为,使用反射机制可以创建对象、调用方法、访问成员变量等,反射机制广泛应用于框架、测试、序列化等领域。 - clone() 方法是 Java 中的一个...

    jni对象获取,使用jni从c++里获取Java对象

    这个指针提供了许多函数,用于操作Java对象、调用Java方法和访问Java字段。 4. **获取Java对象** 要从C++中获取Java对象,首先需要有该对象的局部引用(Local Reference)。可以通过`JNIEnv`的`GetObjectClass()`...

    Java中对象与引用

    ### Java中对象与引用 在Java编程中,深入理解对象与引用的概念对于掌握面向对象编程至关重要。本文将从以下几个方面详细解析对象与引用的基本概念及其相互间的关系。 #### 一、对象与引用的基础概念 **对象**: ...

    用java访问domino对象

    访问 Domino 对象使用 Java 本文主要介绍了使用 Java 访问 Domino 对象的基本编程方法。Domino 对象包括数据库、视图、文档等,可以通过 Java 程序来访问和操作。 首先,需要了解 Java 对 Domino 对象的访问是通过...

    Java对象持久化的介绍等等

    尽管JDBC(Java Database Connectivity)是Java中最常用的数据库访问方式之一,但它在实际应用中存在一些局限性,具体如下: 1. **代码冗余**:当需要对数据库进行频繁的操作时,使用JDBC会导致大量的重复代码,如...

    Java面向对象程序设计课后答案全解

    Java面向对象程序设计是计算机科学中的一个重要领域,它基于面向对象编程(OOP)原则,为开发者提供了构建复杂软件系统的方法。本资源包含了该课程所有章节的课后习题答案,帮助学习者深入理解Java语言的面向对象...

    java实例化对象的过程

    此外,Java还提供了匿名内部类,工厂方法,单例模式等多种实例化方式。匿名内部类允许我们在没有类名的情况下创建对象,通常用于回调和事件处理。工厂方法是一种设计模式,它提供了一种创建对象的抽象,允许子类改变...

    java 子类对象赋值给父类对象的使用

    通过以上讨论,我们可以看到,Java中子类对象赋值给父类对象是一种强大且灵活的设计模式,它允许我们在代码中使用抽象的父类引用,从而简化编程,增加代码的通用性和可维护性。在实际项目中,合理利用这一特性,能够...

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

    获取`Class`对象主要有三种方式:使用`Class.forName()`方法,通过类的`.class`属性,或者直接对类实例使用`getClass()`方法。 例如,如果我们有一个名为`Person`的类,我们可以这样做: ```java Class<?> person...

    《Java面向对象程序设计(第2版)》课件

    - 数据库访问:Java的JDBC API允许开发者以面向对象的方式操作数据库,简化数据存取过程。 综上所述,《Java面向对象程序设计(第2版)》课件涵盖了Java编程的核心内容,通过学习,开发者不仅能掌握Java语法,还能...

    Java面向对象程序设计(第二版)

    不过,我可以基于《Java面向对象程序设计(第二版)》这个标题和标签,来详细说明Java面向对象程序设计中可能涵盖的知识点。 在深入介绍之前,首先需要明确面向对象程序设计(OOP)是一种编程范式,它使用“对象”...

    java面向对象试题

    8.JAVA 中能实现多重继承效果的方式是通过接口实现的。 关于 final 访问修饰符: * final 访问修饰符代表此类或此类成员无法被继承或重新声明。 * 使用 final 修饰符可以确保类或类成员不会被继承或修改。 关于 ...

Global site tag (gtag.js) - Google Analytics