JVM-类加载器子系统
JVM——类加载器子系统
类加载器子系统:负责从文件系统/网络中加载class文件
1. 类加载器分类
- 启动类加载器Bootstrap ClassLoader
- 扩展类加载器Extension ClassLoader
- 系统类加载器AppClassLoader
- 用户自定义加载器
除Bootstrap CLassLoader,其他类加载器都继承于ClassLoader
2. 双亲委派机制
- 一个类加载器收到了类加载请求,先把请求一层层向上面的父类加载器委托,直到Bootstrap ClassLoader
- 若父类可加载则直接返回,否则向下层子加载器分配任务
- 若分配至AppClassLoader也无法加载,抛出ClassNotFound异常
双亲委派机制作用
- 避免类重复加载
- 防止核心API被篡改
当执行main方法的时候,会出现如下问题:
可想而知,编译器根据包名一层一层的向上请求,在请求 bootstrap classloader加载器的时候, bootstrap classloader发现自己可以加载java.lang包下的String类,所以对类库中的String进行了加载,但是类库中的String类并没有main方法,所以抛出了上述异常。
判断两个类是否为同一个类
- 完整类名相同
- 加载该类的类加载器相同
JVM-类加载器子系统
http://example.com/2025/05/16/JVM-类加载器子系统/