`
flyfoxs
  • 浏览: 298117 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

如何让一个Class被一个虚拟机实例载入2次

    博客分类:
  • JAVA
阅读更多
以前在一些Blog上面经常看到分析java虚拟机载入Class的各种机制,其中有一种叫做委托机制. 也就是Classloader总是先让他的上一级去查找,只有上一级找不到的时候,他自己才去查找.这也就是说一个Class总是会被同一个ClassLoader载入了.

但是我又知道,一个Class在一个虚拟机里面是通过3个因素来决定:加载器,类名,包名.我记得一个虚拟机是可以把一个Class载入2次. 如果是一个Class都是由一个ClassLoader来载入,也就是不可能被载入2次了.一直有这样一个问题没有明白.

周末在家看书,突然发现原来,这种ClassLoader的级联委托是一个推荐,不是一个强制标准.这样就豁然开朗了.也就是只要你愿意,你可以自己写多个ClassLoader来载入同一个Class,并且这些Class是无论如何也不会equal的了.
分享到:
评论

相关推荐

    Java虚拟机规范8

    - **Java虚拟机概述**:Java虚拟机是一种抽象计算模型,它在各种硬件平台上提供了一个统一的执行环境,使得Java程序可以在任何安装了JVM的操作系统上运行。 - **规范组织结构**:该规范详细介绍了JVM的各种组成部分...

    Java虚拟机模拟实现

    1. **字节码与类加载机制**:Java源代码被编译成.class文件,这些文件包含字节码,这是JVM能够理解和执行的二进制指令。类加载器是JVM的一部分,负责查找和加载类文件,确保程序运行时正确地引用到所需的类。 2. **...

    Java动态生成代码并编译载入.pdf

    Java动态生成代码并编译载入是一个高级的编程技术,主要用于那些需要在应用程序运行时根据某些模板和数据动态地生成、编译和加载Java代码的场景。这种技术在需要高度定制化处理或是运行时参数化生成业务逻辑的系统中...

    牛客网经典120道Java面试常见题.docx

    Java 虚拟机是一个可以执行字节码(.class)的虚拟机进程。Java 源文件(.java)被编译成能被 Java 虚拟机执行的字节码文件。Java 被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写...

    day15-类加载器&反射&模块化1

    * 全盘负责:当一个类加载器负责加载某个Class时,该Class所依赖的和引用的其他Class也将由该类加载器负责载入,除非显示使用另外一个类加载器来载入父类。 * 父类委托:当一个类加载器负责加载某个Class时,先让...

    Java技术----实现JAVA的动态类载入机制

    通过`Class.forName()`可以获取到一个类的`Class`对象,然后可以进一步创建实例、访问方法和字段。 例如,假设我们有一个名为`com.example.MyClass`的类,我们可以在运行时动态加载它: ```java try { Class<?> ...

    JVM面试要点

    1. 全盘负责:当一个类加载器负责加载某个 Class 时,该 Class 所依赖的和引用的其他 Class 也将由该类加载器负责载入,除非显示使用另外一个类加载器来载入。 2. 父类委托:先让父类加载器试图加载该类,只有在父类...

    实战JAVA虚拟机 JVM故障诊断与性能优化.pdf

    《实战JAVA虚拟机 JVM故障诊断与性能优化》是一本深度剖析Java虚拟机(JVM)的实战型书籍,旨在帮助读者理解JVM的工作原理,掌握JVM的故障诊断技巧,以及进行有效的性能优化。在Java开发中,JVM扮演着至关重要的角色...

    jvm理解pdf

    - **栈**:每个线程都有一个独立的栈,存储局部变量、方法参数和运算结果。 - **方法区**:存储类信息、常量、静态变量等,也叫永久代或元空间。 - **程序计数器**:记录当前线程执行的字节码指令地址。 - **...

    java模拟jvm

    3. **虚拟机栈**:每个线程拥有一个独立的栈,用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每当调用方法时,都会创建一个新的栈帧。 4. **本地方法栈**:为Java方法之外的native方法服务,与虚拟机栈...

    jvm_code-master.rar

    在这个名为"jvm_code-master"的压缩包中,可能包含了书中涉及的各种示例代码、实验项目或作者提供的补充材料,旨在为学习者提供一个实践和加深理解的平台。 JVM是Java语言的核心组成部分,它是Java程序运行的基石。...

    JVM内存分配及String常用方法解析

    2. 虚拟机栈(Java Virtual Machine Stack):每当执行一次方法时,都会创建一个栈帧,存储方法的相关信息,包含局部变量数表、返回值、操作数栈、动态链接。 3. 本地方法栈(Native Method Stack):从功能上来说...

Global site tag (gtag.js) - Google Analytics