天天看点

双亲委派机制

JVM中存在三个默认的类加载器:

bootstrap ClassLoader、ExtClassLoader、AppClassLoader

  • BootStrapClassLoader是ExtClassLoader的⽗类加载器,默认负责加载%JAVA_HOME%lib下的 jar包和class⽂件。
  • ExtClassLoader是AppClassLoader的⽗类加载器,负责加载%JAVA_HOME%/lib/ext⽂件夹下的 jar包和class类。
  • AppClassLoader是⾃定义类加载器的⽗类,负责加载classpath下的类⽂件。

AppClassLoader的⽗加载器是ExtClassLoader,ExtClassLoader的⽗加载器是 BootstrapClassLoader。

双亲委派机制
  • 如果一个类加载器收到类加载请求,它并不会自己先去加载,而是把这个请求委托给父类加载器去执行。
  • 如果父类还存在父类,则进一步委托,依次递归,直到到达启动类加载器。
  • 如果父类加载器能完成,则成功返回,不能完成则子类才会尝试自己去加载。
  • 避免类的重复加载
  • 避免了java的核心API被篡改

继续阅读