类加载流程
- 下图描述了类加载到JVM中,到卸载出内存的整个流程。
[类加载生命周期]
分为加载、连接、初始化、使用和卸载五个步骤。
- 加载:查找并加载类的二进制文件
- 连接:将已读入内存的二进制文件合并到JVM中国
- 验证:确保被加载类的正确性
- 准备:为类的静态变量分配内存,并初始化
- 解析:把常量池中的符号引用转化为直接引用
- 为类的静态变量赋初始值
功能
- 通过类的全限定名加载类的二进制文件
- 把类的二进制文件转换为方法区的运行时数据结构
- 在堆上创建一个java.lang.Class对象,用来封装类在方法区的数据结构,并提供接口。
加载方式
- 最常见的方式:从本地系统、归档jar文件中加载
- 动态加载:将java源文件编译成class文件
- 其他方式:从网络、专有数据库中加载
类加载器
- 启动类加载器(BootstrapClassLoader):加载启动的基础模块类
- 平台类加载器(PlatformClassLoader):加载一些平台相关的类
- 应用程序类加载器(AppClassLoader):加载一些应用级别的模块
- 自定义类加载器(UserClassLoader):用户可以自定义类的加载方式
类加载器关系
[类加载关系]