类加载器的分类

2024-01-08 15:40:10

类加载器的任务就是把 java字节码文件内容 加载到 JVM 中去


分类

类加载器一般分为两类:

  1. 启动类加载器: 这个类加载器使用C++实现 是虚拟机自身的一部分,启动类加载器加载的内容 包括java.lang.Object、java.lang.String等在内的Java核心类库。
    这些类库是构建Java应用程序的基础,它们通常位于JRE(Java Runtime Environment)的lib目录下。

  2. 虚拟机外部 由java语音实现的,这些类加载器全部继承 抽象类
    java.lang.ClassLoader
    比如拓展类加载器,应用程序类加载器(也叫系统类加载器 它负责加载用户类路径上面所指定的类库)


我们的java程序 基本都是由这几类 类加载器相互配合进行加载的,你加载你负责的部分 我加载我的。
但是 不管是哪个类加载器 它们的加载过程的基本流程是相似的。加载过程通常包括三个阶段:加载、连接和初始化。

最后把java文件字节码 加载到JVM的 方法区中。


从classloader继承而来的 类加载器

启动类加载器是c++写的 我们无法改动 也很难触及核心,我们重点来看看从classloader继承而来的 类加载器

在这里插入图片描述

Extension ClassLoader(扩展类加载器): 该类加载器是用来加载Java平台的扩展库,这些库位于JRE的lib/ext目录下。

Application ClassLoader(应用程序类加载器): 也称为系统类加载器,它负责加载应用程序类路径上的类。应用程序类路径是由用户通过命令行或者其他方式指定的,包括应用程序的JAR文件、类文件目录等。

对于业务代码,通常是由应用程序类加载器加载的。这意味着你的项目中的类,包括你自己编写的业务代码,都会被应用程序类加载器加载到JVM中。当你运行一个Java应用程序时,JVM会创建一个应用程序类加载器,并使用它来加载你的业务代码。

文章来源:https://blog.csdn.net/weixin_43966468/article/details/135384250
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。