类加载器

类加载器:类加载器是负责加载类的对象。将class文件(硬盘)加载到内存生成Class对象。

类加载器的组成

  • BootstrapClassLoader 根类加载器:也被称为引导类加载器,负责Java核心类的加载比如System,String等。
  • ExtClassLoader 扩展类加载器:负责JRE的扩展目录中jar包的加载。在JDK中JRE的lib目录下ext目录
  • AppClassLoader 系统类加载器:负责在JVM启动时加载来自java命令的class文件,以及classpath环境变量所指定的jar包和类路径。

类加载器的继承关系

所有的类加载器都是 java.lang.ClassLoader 的子类
93856-wzskecw1ule.png

使用 类.class.getClassLoader() 获得加载自己的类加载器

类加载器加载机制:全盘负责委托机制,

全盘负责:A类如果要使用B类(不存在),A类加载器必须负责加载B类。
64452-c71iwx2r2h.png
委托机制:A类加载器如果要加载资源B,必须询问父类加载是否加载。 如果加载,将直接使用。 如果没有
机制,自己再加载。

采用全盘负责委托机制保证一个class文件只会被加载一次,形成一个Class对象。