切换主题
二十四、类加载器
一、概述
1、什么是类加载器
类加载器:负责把.class
文件(存储的物理文件)加载到内存中

二、类加载的过程
1、加载时机
- 创建类的实例(对象)
- 调用类的类方法
- 访问类或者接口的类变量,或者为该类变量赋值
- 使用反射方式来强制创建某个类或接口对应的
java.lang.Class
对象 - 初始化某个类的子类
- 直接使用
java.exe
命令来运行某个主类
2、加载过程

3、验证-准备-解析
(1)验证

(2)准备

(3)解析

4、初始化

5、小结
- 当一个类被使用的时候,才会加载到内存
- 类加载的过程:加载、验证、准备、解析、初始化
三、类加载器的分类
- 启动类加载器:虚拟机内置的类加载器
- 平台类加载器:负责加载JDK中一些特殊的模块
- 系统类加载器:负责加载用户类路径上所指定的类库
四、双亲委派模型

1、代码演示
java
//获取系统类加载器
ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();
//获取系统类加载器的父加载器 ---平台加载器
ClassLoader classLoader1 = systemClassLoader.getParent();
//获取平台类加载器的父加载器 ---启动类加载器
ClassLoader classLoader2 = classLoader1.getParent();
System.out.println("系统类加载器 " + systemClassLoader);
System.out.println("平台加载器 " + classLoader1);
System.out.println("启动类加载器 " + classLoader2);
2、结果
bash
系统类加载器 jdk.internal.loader.ClassLoaders$AppClassLoader@36baf30c
平台加载器 jdk.internal.loader.ClassLoaders$PlatformClassLoader@12edcd21
启动类加载器 null