java双亲委派

52 阅读1分钟

前言

双亲委派机制:当一个类加载器收到加载类的请求时,它首先不会自己去尝试加载,而是把请求委派给父类加载器去完成,所有的加载请求最终都传递到顶层的启动类加载器(Bootstrap ClassLoader),当父类无法完成类加载请求时,子加载器才会尝试去加载。 会自下向上查找是否加载过,再由顶到下进行加载。

  • Bootstrap:启动类加载器,如:加载rt.jar包里的String类
  • Extension:扩展类加载器
  • Application:应用程序类加载器

image.png

先自低到顶依次判断是否加载过。如果未加载过,则自定到低寻找适合的加载器去加载类。

  • 沙箱安全机制:自己写的java.String.class(rt.jar包里)类不会被加载,防止核心API库被随意篡改
  • 避免类重复加载:父类加载过,子类就没必要子ClassLoader再加载一次,保证类加载的唯一性。