类加载器(ClassLoader)是Java虚拟机的一项核心功能,用于将类的字节码加载到内存中并转换成可以被JVM执行的Java类对象。Java虚拟机可以同时使用多个类加载器,每个类加载器负责加载一些特定的类。
Java类加载器可以根据不同的需求,将类的加载分为不同的层次,通常有以下几种类加载器:
1 启动类加载器(Bootstrap ClassLoader):用来加载Java的核心类库,位于JRE的lib目录下,是虚拟机的一部分,是由C++实现的,不是Java类。
2 扩展类加载器(Extension ClassLoader):用来加载Java的扩展类库,位于JRE的lib/ext目录下。
3 应用程序类加载器(Application ClassLoader):也称为系统类加载器,用来加载应用程序classpath目录下的类。
4 自定义类加载器(Custom ClassLoader):开发人员可以根据自己的需要编写自己的类加载器,来实现一些特定的需求,例如加载网络上的类文件等。
在类加载器的工作过程中,它会采用双亲委派模型来保证类的加载顺序和一致性。即当一个类加载器收到加载请求时,它首先会将这个请求委派给父类加载器去处理,只有在父类加载器无法处理时,才由自己来加载类。这样可以避免同一个类被不同的类加载器加载多次,从而保证了类的唯一性。