请列举哪些Java类加载器 ?
参考答案:
Java类加载器(ClassLoader)是Java运行时环境的一部分,负责在运行时动态加载Java类到JVM中。Java类加载器的主要作用是找到类的字节码文件并加载到内存中,然后将其定义为一个Java类。
Java类加载器主要包括以下三种:
- 引导类加载器(Bootstrap ClassLoader):这是最顶层的加载类,主要加载核心类库,如
rt.jar
、resources.jar
、charsets.jar
等。这个类加载器是由JVM自身实现的,并不是由Java代码实现的。因此,这个类加载器没有对应的Java类。 - 扩展类加载器(Extension ClassLoader):这是引导类加载器的子加载器,它的父加载器是引导类加载器。它从
java.ext.dirs
系统属性所指定的目录中加载类库,或者从JDK的安装目录的lib/ext
子目录(如果java.ext.dirs没有定义)下加载类库。如果用户创建的JAR放在此目录下,也会被自动加载。 - 系统类加载器(System ClassLoader):也称为应用类加载器(Application ClassLoader)。它是扩展类加载器的子加载器,它的父加载器是扩展类加载器。它负责加载环境变量
classpath
或系统属性java.class.path
指定路径下的类库,这是最常用的类加载器。一般来说,Java应用的类都是由它来完成加载的。通过ClassLoader.getSystemClassLoader()
方法可以得到它。
除了这三种类加载器,用户还可以根据需要自定义类加载器,通过继承java.lang.ClassLoader
类并重写其findClass(String name)
方法来实现。自定义的类加载器通常用于加载特定位置的类,或者实现更复杂的类加载逻辑。