类的加载生命周期(加载机制)
加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(using)、和卸载(Unloading)七个阶段。
其中验证、准备和解析三个部分统称为连接(Linking) |
JVM预定义的三种类型类加载器
1)启动(Bootstrap)类加载器: 是用本地代码实现的类装入器,它负责将 <Java_Runtime_Home>/lib下面的类库加载到内存中(比如rt.jar)。由于引导类加载器涉及到虚拟机本地实现细节,开发者无法直接获取到启动类加载器的引用,所以不允许直接通过引用进行操作。 |
2)标准扩展(Extension)类加载器: 是由 Sun 的 ExtClassLoader(sun.misc.Launcher$ExtClassLoader)实现的。它负责将< Java_Runtime_Home >/lib/ext或者由系统变量 java.ext.dir指定位置中的类库加载到内存中。开发者可以直接使用标准扩展类加载器。 |
3)系统(System)类加载器: 是由 Sun 的 AppClassLoader(sun.misc.Launcher$AppClassLoader)实现的。它负责将系统类路径(CLASSPATH)中指定的类库加载到内存中。开发者可以直接使用系统类加载器。 |
双亲委派机制描述
某个特定的类加载器在接到加载类的请求时,首先将加载任务委托给父类加载器,依次递归,如果父类加载器可以完成类加载任务,就成功返回;只有父类加载器无法完成此加载任务时,才自己去加载。 |
来源参考
http://smallbug-vip.iteye.com/blog/2275284
相关推荐
Java虚拟机类加载机制及双亲委派模型
### 类加载器与双亲委派模型详解 #### 类的生命周期与加载过程 类的生命周期主要包括七个阶段:加载、验证、准备、解析、初始化、使用和卸载。在这七个阶段中,验证、准备和解析统称为连接阶段。类的加载过程主要...
双亲委派模型是类加载机制的核心,它规定当类加载器尝试加载某个类型时,除非父加载器找不到该类型,否则任务会被委托给父加载器。这样可以避免类的重复加载,确保所有类都有统一的加载源,从而维护系统的一致性和...
Java类加载机制是Java运行时环境中的核心组成部分,它负责将类的字节码加载到JVM中并转化为可以执行的Java对象。这个过程涉及到类的查找、加载、验证、准备、解析和初始化等多个阶段。这里我们将深入探讨“双亲委派...
Tomcat作为一款广泛使用的Java应用服务器,其类加载机制有着独特的设计,特别是对Java的双亲委派模型有所突破。本篇文章将深入探讨Tomcat如何打破双亲委派模型,并通过源码分析和图表解析来帮助理解这一机制。 首先...
类加载器按照特定的规则工作,其中最核心的就是双亲委派模型。 类加载器主要有三种类型: 1. 启动类加载器(Bootstrap ClassLoader):这是JVM内核的一部分,由C++实现,不继承自ClassLoader。它负责加载JVM的核心...
Java 虚拟机类加载器的工作方式...理解类加载器的工作原理和双亲委派模型对于优化程序性能、解决类冲突以及构建复杂的模块化系统至关重要。在实际开发中,掌握这些知识可以帮助我们编写更高效、更健壮的Java应用程序。
总的来说,Java类加载机制是一个复杂但重要的主题,涉及到类加载器、类的生命周期、双亲委派模型以及自定义加载器的使用。通过深入理解这些概念,开发者可以更好地控制和优化应用程序的行为,尤其是在分布式、模块化...
类加载机制涉及类加载顺序、类加载器的体系结构、类加载过程以及双亲委派模型等核心概念。架构师或高级开发人员必须深刻理解这些知识点,以便在进行大型互联网平台架构设计和开发时做出正确的决策。 首先,类加载指...
类加载机制不仅涉及到类的加载、验证、准备、解析和初始化等步骤,还包括类加载时机的选择及类加载器的具体工作原理等内容。 #### 一、类加载时机 Java类的生命周期主要包括以下几个阶段:加载、验证、准备、解析...
Java的类加载机制遵循“双亲委派模型”(Delegation Model)。当一个类被加载时,它首先会尝试由当前线程的Context ClassLoader进行加载,如果该类加载器无法加载,则向上委托给父类加载器,直至Bootstrap ...
该文件是JVM中关于类加载机制的知识整理的思维导图,包括类加载机制概述、类加载的生命周期、加载时机、加载过程、类加载、类的初始化和实例化等几个大...包括双亲委派机制,违背双亲委派模型,开发自己的类加载器等等
类加载机制遵循双亲委派模型,这意味着当一个类加载器收到加载类的请求时,它首先会委托给父类加载器去尝试加载。这样设计的好处是保证了核心库的稳定性,防止用户自定义类覆盖系统类,同时也便于控制类的加载顺序...
Loader的子类,名为CustomClassLoader,这次我们不仅重写findClass方法,还要重写loadClass方法,以便在加载类时不遵循双亲委派模型。在loadClass方法中,我们首先检查是否已经加载过该类,如果未加载,则调用自己的...
类加载器按照双亲委派模型工作,即子类加载器优先尝试委托父类加载器加载,只有当父类加载器无法加载时,子类加载器才会尝试自己加载。 2. **链接**: 链接阶段分为验证、准备和解析三个子步骤。 - **验证**:...
类加载机制遵循双亲委派模型,即一个类加载请求会首先交给父加载器处理,只有当父加载器无法加载时,才会由当前加载器尝试。这样设计可以避免类的重复加载,保证核心类的一致性。 3. **类的生命周期** 类的生命...
6. **双亲委派模型**:Java的类加载机制遵循双亲委派模型,即子类加载器先尝试将加载请求委托给父类加载器,只有父类加载器无法加载时,子类加载器才会尝试自己加载。这保证了Java的核心库只由引导类加载器加载,...