双亲委派

java类加载器

  • jdk自带有三个类加载器:BootstrapClassLoader、ExtClassLoader、APPClassLoader。
  • BootStrapClassLoader时ExtClassLoader的父类加载器 (这里所说的父类加载器时组合关系,并不是继承关系) 默认负责加载%JAVA_HOME%lib目录下的jar和class文件。
  • ExtClassLoader是APPClassLoader的父类加载器 也是组合关系,负责加载%JAVA_HOME%lib/ext文件下的jar和class文件。
  • APPClassLoader是自定义类的加载器,负责加载classpath下的类文件。加载程序员自己写的类文件和引入的第三方jar包
  • 还可以继承ClassLoader实现自定义类加载器。

双亲委派

双亲委派机制好处

  • 主要是为了安全性,避免用户自己编写的类动态替换java的一些核心类,比如String
  • 同时也可以避免类的重复加载,因为jvm中区分不同类,不仅仅是根据类名,相同的class文件被不同的ClassLoader加载就是不同的两个类。识别两个类是否为相同:全路径 + 类加载器
posted @ 2021-05-20 10:04  刘指导  阅读(85)  评论(0编辑  收藏  举报