类加载器的任务就是把 java字节码文件内容 加载到 JVM 中去
类加载器一般分为两类:
启动类加载器: 这个类加载器使用C++实现 是虚拟机自身的一部分,启动类加载器加载的内容 包括java.lang.Object、java.lang.String等在内的Java核心类库。
这些类库是构建Java应用程序的基础,它们通常位于JRE(Java Runtime Environment)的lib目录下。
虚拟机外部 由java语音实现的,这些类加载器全部继承 抽象类
java.lang.ClassLoader
比如拓展类加载器,应用程序类加载器(也叫系统类加载器 它负责加载用户类路径上面所指定的类库)
我们的java程序 基本都是由这几类 类加载器相互配合进行加载的,你加载你负责的部分 我加载我的。
但是 不管是哪个类加载器 它们的加载过程的基本流程是相似的。加载过程通常包括三个阶段:加载、连接和初始化。
最后把java文件字节码 加载到JVM的 方法区中。
启动类加载器是c++写的 我们无法改动 也很难触及核心,我们重点来看看从classloader继承而来的 类加载器