[JVM笔记].双亲委派模型

68 阅读1分钟

简介

双亲委派模型要求除了顶层的启动类加载器之外,其他的类加载器都要有父类加载器

[类加载器关系图]

工作流程

首先,如果一个类收到了类加载的请求,并不会马上进行类加载,而是会把这个请求委托给父类,递归调用这一过程,直到启动类加载器,如果父类加载器可以完成这一过程,则成功返回,否则,子类加载器会尝试进行记载。

优势

  1. 这一递归调用,使得类随着类加载器具有了优先级关系,而通过这种关系,可以避免一个类被重复加载;
  2. 防止核心API库被纂改,假设网络中有一个java.lang.Integer,在传递到启动类加载器的时候,发现这个类已经被加载,也就不会重复加载通过网络传递过来的类了;
  1. 如果我们自己随意编写了不存在的java.lang.xxx的文件,但是当其加载到启动类加载器的时候,会发现并没有这个类,那么也就不会被加载了。

破坏双亲委派模型

Note(思考):这样一个单向的过程,会使得父类无法识别子类加载的资源?

后果:

解决方法:引入了线程上下文类加载器

\