虚拟机的三个核心类加载器
虚拟机的三个核心类加载器
在Java虚拟机(JVM)中,类加载器(ClassLoader)负责将类的字节码加载到内存中,并生成对应的Class
对象。以下是三个核心类加载器的详细说明:
1. 启动类加载器(Bootstrap ClassLoader)
- 职责:
加载Java核心类库(如java.lang
、java.util
等),位于<JAVA_HOME>/jre/lib
目录下的rt.jar
、resources.jar
等。 - 特点:
- 由C/C++实现,是JVM的一部分,无法在Java代码中直接访问。
- 父加载器为
null
(位于类加载器层级的最顶层)。
- 示例:
String.class
、Object.class
等核心类由其加载。
2. 扩展类加载器(Extension ClassLoader)
- 职责:
加载JRE扩展目录(<JAVA_HOME>/jre/lib/ext
或java.ext.dirs
指定目录)中的类库。 - 特点:
- 由Java实现,对应
sun.misc.Launcher$ExtClassLoader
类。 - 父加载器为启动类加载器(但在代码中获取其父加载器会返回
null
)。
- 由Java实现,对应
- 示例:
加载javax
包中的扩展类(如javax.xml