`
alex_gao
  • 浏览: 80946 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java RTTI

 
阅读更多

Java RTTI的思维导图:


RTTI(runtime type info)用于在运行时识别对象的类型信息。java虚拟机不能在运行时加载所有类型对象(动态加载),同时部分类型的信息是无法再编译器就获取的,需要在业务逻辑中依据类型信息进行相关逻辑的处理,这是就需要RTTIl了。

众所周知,java类在编写时会生成.class文件,那.class文件时如何使用的呢?在创建java类对应对象时,jvm虚拟机的classLoader会检测对象对应的Class对象是否已加载,如果没有加载则会依据相关途径查询对应.class文件(如 通过classPath在本地文件系统进行查找),在获取到.class文件之后会对文件进行有效验证,之后会依据Class对象进行详细类型对象的创建。使用Class.forName方法、应用类的static变量、使用构造方法创建对象时,都会对class进行加载。

使用Class的newInstance方法可以创建class对应对象,但前提是对应类有默认构造函数(无参构造函数)。

xxx.class被称为类字面常量,是对Class对象的引用,但使用".class"获取对Class对象的引用,并不会立即初始化Class对象,为初始化Class对象,需要经过三个步骤:

1)加载:由classloader查找class字节码文件,并创建Class对象。

2)链接:验证字节码文件,为静态分配存储空间,解析对其他对象的引用;

3)初始化:初始化父类,执行静态初始化器和静态是初始化快。

final static成员和static成员的在以上三个过程中就不一样,final static成员被称为“编译器常量”,在编译时已经被赋值,所以可以在类加载前就进行访问,而静态成员(非final)需要在类加载后、class对象初始化之后赋值。

 

java内存为堆(heap)、方法区域(method area)、java栈(java stack)、程序计数注册器(program counter register)、本地方法栈(native method stack)。对象的类型信息就存储在method area中,且不会有垃圾回收器进行垃圾回收。因此,如果设置的method area区域较少时,就回出现内存溢出问题(对象的error message是: java.lang.OutOfMemoryError: PermGen space),对应的JVM设置参数是:-xx:MaxPermSize=512m。

 

(更新中)

  • 大小: 28.4 KB
分享到:
评论
1 楼 tianhandigeng 2014-09-24  
一直没搞懂,问一下,RTTI是指一种机制,还是一个概念? 思维导图中的那些都是RTTI包含的内容?

相关推荐

    举例讲解Java的RTTI运行时类型识别机制

    Java的RTTI(Runtime Type Information,运行时类型信息)机制是Java语言的一个重要特性,它允许程序在运行时检查对象的实际类型。RTTI使得在编译时未知类型的对象能够在运行时进行适当的处理,从而增强了代码的灵活...

    Java的RTTI和反射机制代码分析

    Java的RTTI(运行时类型识别)和反射机制是两种强大的工具,它们允许程序在运行时检查和操作类的信息及对象。RTTI是Java的一种特性,它使得在编译后的程序中仍然可以在运行时获取对象的实际类型信息。这在处理多态性...

    Java进阶教程之运行时类型识别RTTI机制

    在Java编程中,运行时类型识别(Runtime Type Identification,简称RTTI)是一种关键特性,它允许程序在运行时检查对象的实际类型。RTTI是Java多态性的重要基础,使得代码能够根据对象的实际类型执行不同的操作。...

    强类型系统 RTTI 类型识别

    在面向对象的编程语言中,例如 C++、Java、Delphi 等,RTTI 都提供了对类型识别的支持。在 C++ 中,RTTI 并不是什么新的东西,它早在十多年以前就已经出现了。但是,大多数开发人员,包括许多高层次的 C++ 程序员,...

    java开发技术大全

    随后介绍了Java中的高级技术,详细讨论了其中的多线程、集合、泛型、RTTI等。这些基本知识介绍完毕之后,就进入到实际编程阶段,先后介绍了GUI程序设计、多媒体程序设计、数据库和网络程序设计,这些知识均以示例...

    Thinking_in_java(chapter10).pdf

    从给定文件的【部分内容】中我们可以了解到,该文档主要讲述了Java中运行时类型识别(RTTI)的原理和用途,以及Java中的反射机制。在此基础上,我们进一步探讨Java中RTTI和反射的相关知识点。 知识点一:运行时类型...

    java 泛型类的类型识别示例

    在Java中,RTTI允许我们在程序运行时检查和操作对象的实际类型,这是通过使用`instanceof`关键字和`getClass()`方法实现的。在泛型类中,虽然类型参数在编译时被擦除,但仍然可以通过一些方式获取类型信息。 泛型类...

    深入理解Java的反射机制Java系列2021.pdf

    RTTI在Java中主要通过两种形式存在:一种是传统的类型转换,也就是instanceof关键字和类的cast方法;另一种是反射机制。RTTI的实现依赖于Java类模型中的Class类,它是所有类的最终父类,每个类在运行时都会有一个...

    java联想(中文)

    2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体CD-ROM 8. 源代码 9. 编码样式 10. Java版本 11. 课程和培训 12. 错误 13. 封面设计 14. 致谢 第1章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 ...

    Practical Java(简体中文)

    Java的动态类型系统和RTTI(Run-Time Type Information)、Reflection机制,提供了对运行时类型的深入洞察,增强了程序的灵活性和动态性。此外,Java的**标准程序库**(Java Libraries)是其另一大亮点,涵盖了广泛...

    The diffenences bwtween Java and C++ (JAVA与C++区别)

    如虚函数(virtual function)、运算符重载(operator overloading)、多重继承(multiple inheritance)、模板(template)、异常处理(exception handling)、运行时类型信息(RTTI)和命名空间(namespace)等。...

    Thinking in Java 中文第四版+习题答案

    2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体 8. 源代码 9. 编码样式 10. Java版本 11. 课程和培训 12. 错误 13. 封面设计 14. 致谢 第1章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 实现方案的...

    C++和Java多态的区别

    - **运行时类型信息**:C++提供RTTI机制来支持运行时类型识别,Java则通过方法表和JVM的动态绑定机制来实现。 - **性能考量**:C++中的虚函数调用可能会导致额外的间接寻址开销,而Java中的方法调用由JVM优化处理,...

    java元数据——CLass类

    1. JAVA 使用 Class 对象来执行 RTTI(RunTime Type Information),创建这个类的实例。 2. 验证同一个类的多个对象的Class对象是一个。 获取 Class 对象有多种方式: 1. 通过 Class 的 forName(String name) 方法...

    Practicla Java.pdf(简体中文版)

    - 动态类型系统:支持运行时类型识别(RTTI)和反射(Reflection)机制。 - 标准库:提供广泛且强大的功能集合。 #### 三、Java编程中的关键概念 - **对象创建与初始化**:讲解如何创建Java对象以及对象初始化的过程...

    java 编程入门思考

    2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体CD-ROM 8. 源代码 9. 编码样式 10. Java版本 11. 课程和培训 12. 错误 13. 封面设计 14. 致谢 第1章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 ...

    Java反射之Constructor、Method、Field使用及说明

    在Java中,**运行时类型信息**(RTTI)是指程序能够在运行时获取并使用对象和类的类型信息。这使得开发者可以在运行时动态地创建对象、调用方法或访问字段。RTTI主要通过两种方式实现: 1. **传统RTTI**:假设在...

    Java编程思想学习笔记

    在高级篇中,Java程序设计进一步深入到异常处理、RTTI与反射机制、回调机制、泛型编程、容器使用、I/O系统、并发编程以及网络和图形界面编程等方面。异常处理是Java程序中处理错误和异常情况的机制。RTTI(Runtime ...

Global site tag (gtag.js) - Google Analytics