一、说明
1.jvm支持两种类型的类加载器,分别是引导类加载器(bootstrap classloader)和自定义类加载器(user-defined classloader) 2.自定义类加载器一般指的是程序中由开发人员自定义的一类类加载器,java虚拟机规范却没有这么定义,而是将所有派生于抽象类classloader的类加载器都划分为自定义类加载器 3.在程序中,最常见的类加载器有引导类加载器、扩展类加载器、系统类加载器和自定义类加载器,是包含关系,不是上下层关系,也不是父类的继承关系 4.引导类加载器是c语言编写实现的,代码无法获取到
二、示例
2.1 代码
package com.learning.classloader;
public class ClassLoaderLearning {
public static void main(String[] args) {
// 获取系统类加载器
ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();
System.out.println(systemClassLoader);
// 获取其上层: 扩展类加载器
ClassLoader extClassLoader = systemClassLoader.getParent();
System.out.println(extClassLoader);
// 试图获取其上层: 获取不到引导类加载器
ClassLoader bootstrapClassLoader = extClassLoader.getParent();
System.out.println(bootstrapClassLoader);
// 对于用户自定义类型: 默认使用系统类加载器进行加载
ClassLoader classLoader = ClassLoaderLearning.class.getClassLoader();
System.out.println(classLoader);
// String类型: 使用引导到加载器进行加载的,java的核心类库都是使用引导类加载器进行加载的
ClassLoader stringClassLoader = String.class.getClassLoader();
System.out.println(stringClassLoader);
}
}
2.2 截图