类装载器
Java类加载
类加载的任务就是.class文件加载到到JVM转换成 java.lang,.class类
类加载过程:装载、链接和初始化。
a.装载:找到.class二进制字节码并加载到JVM,JVM通过类的全限定名以及类加载器完成类加载;
b.链接:对二进制字节码的格式进行校验,初始装载类的静态变量以及解析类中的接口、类。
c.初始化:执行类中的静态初始化代码、构造模块以及静态属性的初始化。
类装载器ClassLoader
- ClassLoader是一个抽象类
- ClassLoader的实例将读入Java字节码将类装载到JVM中
- ClassLoader可以定制,满足不同的字节码流获取方式
- ClassLoader负责类装载过程中的装载阶段
类加载的种类:
- BootStrap ClassLoader 启动ClassLoader
- Extension ClassLoader 扩展ClassLoader
- App ClassLoader 应用/系统ClassLoader
- Custom ClassLoader 自定义ClassLoader
解读:
a.上面的是下面的父类
b.自低向上检查类是否已经加载
c.自顶而下尝试加载类
自低向上检查类是否加载
双亲委托模型(确保加载的唯一性):当类收到加载请求时,它首先不会尝试加载这个类,
而是把请求委托给父类加载器执行,每个类都是如此(如果还有父类继续上交),如果父
类加载不了,子类加载才会进行加载。