JVM-类加载器子系统

JVM——类加载器子系统

类加载器子系统:负责从文件系统/网络中加载class文件

1. 类加载器分类

  • 启动类加载器Bootstrap ClassLoader
  • 扩展类加载器Extension ClassLoader
  • 系统类加载器AppClassLoader
  • 用户自定义加载器

除Bootstrap CLassLoader,其他类加载器都继承于ClassLoader

2. 双亲委派机制

  1. 一个类加载器收到了类加载请求,先把请求一层层向上面的父类加载器委托,直到Bootstrap ClassLoader
  2. 若父类可加载则直接返回,否则向下层子加载器分配任务
  3. 若分配至AppClassLoader也无法加载,抛出ClassNotFound异常

双亲委派机制作用

  • 避免类重复加载
  • 防止核心API被篡改

双亲委派机制

当执行main方法的时候,会出现如下问题:

在这里插入图片描述

可想而知,编译器根据包名一层一层的向上请求,在请求 bootstrap classloader加载器的时候, bootstrap classloader发现自己可以加载java.lang包下的String类,所以对类库中的String进行了加载,但是类库中的String类并没有main方法,所以抛出了上述异常。

判断两个类是否为同一个类

  • 完整类名相同
  • 加载该类的类加载器相同

JVM-类加载器子系统
http://example.com/2025/05/16/JVM-类加载器子系统/
作者
Kon4tsu
发布于
2025年5月16日
许可协议