`
pengcqu
  • 浏览: 774542 次
  • 性别: Icon_minigender_1
  • 来自: 未来
社区版块
存档分类
最新评论

JVM ClassLoader机制

阅读更多

1)三个类加载器:

bootstrap classloader - 引导(也称为原始)类加载器,它负责加载Java的核心类。

extension classloader - 扩展类加载器,它负责加载JRE的扩展目录中JAR的类包。

system classloader - 系统(也称为应用)类加载器,加载应用程序的类。

bootstrap classloader不是一个真正的ClassLoader实例

2)获取引导类加载器加载了哪些类:

URL[] urls=sun.misc.Launcher.getBootstrapClassPath().getURLs();
     for (int i = 0; i < urls.length; i++) {
         System.out.println(urls.toExternalForm());
     }

3)获取应用类加载器:

ClassLoader.getSystemClassLoader()

4JVM类加载机制:全盘负责委托机制

全盘负责:当一个classloader加载一个Class的时候,这个Class所依赖的和引用的所有Class也由这个classloader负责载入,除非是显式的使用另外一个classloader载入;
委托机制:先让parent(父)类加载器(而不是super,它与parent classloader类不是继承关系)寻找,只有在parent找不到的时候才从自己的类路径中去寻找。

Cache机制:如果cache中保存了这个Class就直接返回它,如果没有才从文件中读取和转换成Class,并存入cache,这就是为什么我们修改了Class但是必须重新启动JVM才能生效的原因。

5)每个ClassLoader加载Class的过程是:
1.
检测此Class是否载入过(即在cache中是否有此Class),如果有到8,如果没有到2
2.
如果parent classloader不存在(没有parent,那parent一定是bootstrap classloader了),到4
3.
请求parent classloader载入,如果成功到8,不成功到5
4.
请求jvmbootstrap classloader中载入,如果成功到8
5.
寻找Class文件(从与此classloader相关的类路径中寻找)。如果找不到则到7.
6.
从文件中载入Class,到8.
7.
抛出ClassNotFoundException.
8.
返回Class.
其中5.6步我们可以通过覆盖ClassLoaderfindClass方法来实现自己的载入策略。甚至覆盖loadClass方法来实现自己的载入过程。

 

 

相关链接:

★  Java基础知识点汇总 

★ 【下载】经典常用算法 Java和C语言两种实现(含代码图例)

【下载】Java各种排序算法实现(含代码)

 

 

分享到:
评论

相关推荐

    JVM ClassLoader简析

    ClassLoader是JVM中的一个重要组件,它的主要任务是加载类的二进制数据,转换为Class对象,并供Java应用程序使用。本文将深入浅出地探讨JVM ClassLoader的工作原理和相关知识点。 首先,ClassLoader可以分为三种...

    理解Java ClassLoader机制

    Java ClassLoader机制是Java运行时环境中的核心组件之一,它负责加载类到JVM(Java虚拟机)中,使得程序能够执行。理解ClassLoader的工作原理对于优化应用性能、处理类加载问题以及实现自定义加载器至关重要。 首先...

    ClassLoader运行机制 自己写的

    在Java虚拟机(JVM)中,类加载器(ClassLoader)是至关重要的组成部分,它负责查找和加载类的字节码文件。理解ClassLoader的工作机制对于深入掌握Java应用程序的运行至关重要。这里我们将详细讨论ClassLoader的运行...

    java ClassLoader机制及其在OSGi中的应用

    Java ClassLoader机制是Java虚拟机(JVM)中一个至关重要的组成部分,它的主要任务是将类的.class文件加载到JVM中,使得程序能够运行。ClassLoader不仅负责类的加载,还涉及类的验证、初始化等一系列过程。理解...

    JVM的运行机制

    JVM的设计目标是实现Java代码的“一次编写,到处运行”原则,这得益于它的平台无关性和字节码执行机制。 1. **JVM的结构** - **字节码指令集**:Java源代码经过编译器编译成字节码,这是一种平台无关的中间表示。...

    深入理解ClassLoader工作机制.docx

    《深入理解ClassLoader工作机制》 Java虚拟机(JVM)中的ClassLoader是负责加载类到内存中的核心组件。它不仅承担着将字节码转换为可执行对象的重任,还参与了类生命周期的各个阶段,包括加载、验证、准备、解析、...

    深入JVM内核—原理、诊断与优化视频教程-2.JVM运行机制

    【JVM运行机制详解】 Java虚拟机(JVM)是Java平台的核心组成部分,它负责执行字节码,为Java程序提供跨平台的运行环境。在深入理解JVM内核的运行机制时,我们需要关注以下几个关键点: 1. **类加载机制**:JVM...

    JVM.zip_JVM代理_classloader

    而JVM代理(JVM Agent)和类加载器(ClassLoader)则是两个关键的概念,它们对于深入理解Java应用程序的运行机制至关重要。 **JVM代理** JVM代理是一种在JVM启动时或者运行时插入额外功能的方式,它允许开发者在不...

    ClassLoader机制详解

    Java ClassLoader机制是Java虚拟机(JVM)中至关重要的组成部分,它负责加载类到内存中以便执行。ClassLoader的工作方式和层次结构对于理解和调试Java应用程序尤其是涉及到类动态加载的场景至关重要。 首先,...

    Java基础知识点 - 内容比较全面

    5. **JVM ClassLoader机制**:ClassLoader负责加载类到JVM中,包括Bootstrap ClassLoader、Extension ClassLoader和App ClassLoader。类加载遵循双亲委派模型,确保类加载的唯一性。 6. **Java中的synchronized使用...

    JVM类加载机制详细讲解

    总结,JVM 类加载机制是Java平台的核心特性之一,它确保了程序的稳定运行和动态扩展能力。理解类加载器的工作原理和双亲委派模型对于优化程序性能、解决类冲突以及构建复杂的模块化系统至关重要。在实际开发中,掌握...

    JVM的机制学习手册非常不错

    1. 类加载器(ClassLoader):负责查找并加载类文件到JVM内存。 2. 运行时数据区(Runtime Data Areas):包括堆、方法区、虚拟机栈、本地方法栈和程序计数器。 3. 执行引擎(Execution Engine):执行字节码并管理...

    ClassLoader类加载机制和原理详解

    在Java编程语言中,ClassLoader是核心组件之一,它负责加载类到JVM(Java虚拟机)中执行。本文将深入探讨ClassLoader的工作原理和类加载机制,帮助开发者理解这个至关重要的概念。 1. 类加载机制概述 Java的类加载...

    探索JVM底层奥秘ClassLoader源码分析与案例讲解

    在JVM的运行机制中,ClassLoader起着至关重要的作用。ClassLoader负责查找并加载类到JVM中,使得程序得以运行。本篇将深入探讨ClassLoader的源码,通过实例解析其工作原理。 ClassLoader的基本工作流程可以概括为...

    JVM类加载过程.pptx

    JVM的类加载机制是JVM的核心机制之一,它把描述类的数据从class文件加载到内存,并对数据进行校验、转换解析和初识化,形成可以被虚拟机直接使用的Java类型。 Java代码执行流程是JVM的核心流程之一,它首先通过...

    classloader

    ClassLoader就是执行这个动态加载任务的机制。 Java ClassLoader的工作流程大致如下: 1. 当程序需要加载一个类时,它会请求ClassLoader。 2. ClassLoader接收到请求后,首先检查该类是否已经加载过,如果已加载则...

    推荐一些JVM原理,JVM调优,JVM内存模型,JAVA并发 电子书1

    1. JVM原理:JVM的工作原理涉及类加载器(ClassLoader)、类文件(ClassFile)、内存管理及垃圾收集机制。类加载器负责将.class文件加载到内存中,为程序的运行准备数据结构。内存管理涉及JVM内存区域,包括堆、栈、...

    java的ClassLoader类加载器机制

    Java的ClassLoader类加载器机制 在 Java 虚拟机(JVM)中,类加载器(ClassLoader)扮演着非常重要的角色。类加载器负责加载 Java 类,包括核心类和用户自定义类。在 JVM 运行过程中,类加载器会形成一个层次结构,...

Global site tag (gtag.js) - Google Analytics