`

Java类加载器解析

    博客分类:
  • jvm
阅读更多


一:分类
Java中的类加载器可以分为四类:

1 Bootstrp loader
Bootstrp加载器是用C++语言写的,它是在Java虚拟机启动后初始化的,它主要负责加载%JAVA_HOME%/jre/lib以及%JAVA_HOME%/jre/classes中的类。

2 ExtClassLoader 
   Bootstrp loader加载ExtClassLoader,并且将ExtClassLoader的父加载器设置为Bootstrp loader.ExtClassLoader主要加载%JAVA_HOME%/jre/lib/ext中的jar文档,以及此路径下的所有classes目录。

3 AppClassLoader
  Bootstrp loader加载完ExtClassLoader后,就会加载AppClassLoader,并且将AppClassLoader的父加载器指定为ExtClassLoader。AppClassLoader主要负责加载classpath所指定的位置的类或者是jar文档。

4 URLClassLoader
    URLClassLoader是我们可以自定义的加载器,我们可以通过指定一个URL对象来创建此加载器,它所加载路径就是URL所代表的逻辑位置。并且它的父加载器是AppClassLoader。



(*注意:某个加载器的父加载器与加载它的加载器没有联系,父加载器是按照规定的规则指定的)

二:委托模型
   所谓委托模型就是指:当一个加载器在加载某个类的时候先让父加载器去加载,父加载器再让其父加载器加载,依此类推,如果所有的父加载器都不能加载,再由自己来加载,而如果此时自己也不能加载,则产生java.lang.NoClassDefFoundError错误。

   委托模型最大的好处就是提高了java的安全性,比如:如果加载器的父加载器已经加载了某个类,那么自己就不能再加载此类了,这样就使得一些与java类库中同名的类不能加载进来。

三:ClassLoader以及Class

   我们都知道java中的每个类(包括接口)编译后都会生成一个.class文件,当.class文件被加载器加载到内存中后,就会生成一个Class对象的实例,此实例有一个指向加载它自己的加载器的实例引用。而我们每个类的实例都会有一个指向此实例所对应的类的Class对象。并且值得我们注意的是如果一个类被不同的加载器加载,那么对于每个类加载器来说类的静态初始化块都要执行。

分享到:
评论

相关推荐

    java类加载器

    ### Java 类加载器详解 #### 一、类加载器概述 在Java中,类加载器(Class Loader)是一项核心机制,用于将字节码(.class文件)加载到JVM中,使其成为运行时的对象。类加载器不仅实现了类的加载功能,还确保了...

    Java类加载器原理

    Java 类加载器原理 Java 类加载器是Java虚拟机(JVM)的核心组成部分,它负责将类的字节码加载到内存中并转换为可执行的Java类。类加载器的作用不仅仅是加载类,还包括确保类的唯一性,避免重复加载,并且遵循特定...

    Java类加载原理解析

    本文主要解析Java类加载的原理,分为三个部分:基础的类加载原理解析、插件环境下的类加载和线程上下文类加载器。 首先,Java虚拟机(JVM)内置了三种预定义的类加载器: 1. 启动(Bootstrap)类加载器:这是最基础的...

    Java类加载器.pdf

    ### Java类加载器详解 Java类加载器是Java运行时环境的一个关键组成部分,负责将类文件(.class)从各种来源加载到JVM中。它不仅管理类的生命周期,还确保了类的正确加载和初始化,是Java动态特性的基石。 #### 类...

    自定义Java类加载器

    Java类加载器是Java虚拟机(JVM)的关键组成部分,它负责查找并加载类到内存中,使得程序能够运行。自定义Java类加载器允许我们根据特定需求扩展默认的加载机制,例如,从非标准位置加载类或者实现动态加载。在Java...

    Java类加载原理解析文档

    本文将详细解析Java类加载原理,分为三篇文章进行阐述,分别是:Java类加载原理解析、插件环境下类加载原理解析和线程上下文类加载器。 首先,我们来了解Java虚拟机(JVM)的类加载器结构。JVM预定义了三种主要的类...

    深入解析Java类加载器及其工作机制

    Java 类加载器是 Java 运行时环境中不可或缺的组成部分,负责将 .class 文件加载到 JVM 中。理解类加载器的工作原理对于深入掌握 Java 语言及其运行机制至关重要。本文将详细探讨 Java 类加载器的概念、类型以及工作...

    Java的类加载器

    Java的类加载器是Java虚拟机(JVM)的核心组件之一,它负责将类的字节码文件从文件系统或网络中加载到JVM中,然后进行校验、解析和初始化,使得Java程序能够运行。类加载器的概念是Java动态加载和运行时类重定义的...

    深入探讨 Java 类加载器

    【深入探讨 Java 类加载器】 Java 类加载器是Java虚拟机(JVM)的核心组成部分,它的主要任务是将Java类的字节码加载到JVM中以便执行。类加载器的概念始于JDK 1.0,最初是为了解决Java Applet在浏览器中的运行需求...

    java类加载器1

    Java 类加载器是Java语言的核心特性之一,它允许程序在运行时动态地加载类到Java虚拟机(JVM)中。这一特性对于实现模块化、插件化和动态部署等功能至关重要。类加载器的设计遵循“分层加载”原则,形成了一个树状的...

    Java类加载内幕详细讲解

    通过掌握类加载的过程、类加载器的工作原理以及类加载的线程安全性等方面的知识,开发者能够更好地利用Java的动态特性,优化程序性能,并避免常见的异常问题,如`ClassNotFoundException`等。此外,对于自定义类加载...

    深入研究Java类加载机制 深入研究Java类加载机制

    Java中的类加载器遵循一个原则叫做“父母委托模型”,即当一个类加载器收到类加载请求时,首先将加载任务委托给父类加载器,只有当父类加载器无法完成加载时才会尝试自己加载。 这种设计模式的好处在于避免了类的...

    Java类加载器的详解

    Java类加载器是Java虚拟机(JVM)的重要组成部分,它的主要职责是将类的字节码文件(.class文件)从文件系统、网络或内存中读取,并转换为运行时的java.lang.Class对象。这个过程是Java动态加载机制的核心,使得Java...

    Java类加载器机制与模型.pdf

    总之,Java类加载器机制是Java平台灵活性和动态性的重要体现,它使得JVM能够在运行时加载和解析类,支持代码的热部署,增强了系统的可扩展性和可维护性。通过深入学习和理解这一机制,开发者能够更好地驾驭Java应用...

    Java类加载器学习总结.pdf

    Java类加载器是Java运行时环境(JRE)的一个重要组成部分,它负责将Java字节码加载到内存中,使其可以被Java虚拟机(JVM)执行。类加载器本身也是一个类,它的主要职责是从文件系统、网络或者JAR包中加载类文件到JVM...

    java class loader(JAVA类加载器)

    Java中的类加载器分为三个主要层次:启动类加载器(Bootstrap ClassLoader)、扩展类加载器(Extension ClassLoader)和系统类加载器(AppClassLoader)。启动类加载器负责加载JRE核心库,如`rt.jar`;扩展类加载器...

Global site tag (gtag.js) - Google Analytics