https://www.bilibili.com/video/BV1Qv411V7qw

JVM类加载原理

  1. 使用 new 关键字实例化对象
  2. 读取或者设置一个类的静态变量的时候
  3. 调用类对应的静态方法的时候
  4. 对类进行反射调用的时候
  5. 初始化子类时,父类会先被初始化
  6. 虚拟机启动时,定义了 main() 方法的那个类先初始化

注意:类加载器的体系并不是“继承”体系,而是委派体系

它用来加载 Java 的核心类库(Java_HOME/jre/lib/rt.jar、reource.jar 或 sun.boot.class.path 路径下的内容)、用于提供JVM自身需要的类。

从 java.ext.dirs 系统属性所指定的目录中加载类库,或从JDK的安装目录的jre/lib/ext 子目录(扩展目录)下加载类库。如果用户创建的 JAR 放在此目录下,也会自动由扩展类加载器加载