类加载过程
加载
加载的过程主要完成三件事
1. 加载二进制文件 [根据类的全限定类名,加载二进制字节流.
2. 将二进制所代表的静态存储结构转成java 运行时方法区的数据结构[将二进制字节流所代表的静态存储结构转成方法区的运行时数据结构]
3. 在内存中生成一个代表这个类的 java.lang.Class 对象,作为方法区这个类的各种数据访问的入口
验证
1. 验证文件格式是否正确。
2. 类的元数据是否正确 [语法验证]
3. 字节码验证 [语义验证]
4. 符号引用验证
准备
1. 为类变量分配内存
2. 为类变量进行初始化
3. 如果存在常量 , 则会直接赋值
解析
是虚拟机将 常量池 符号引用转成直接引用的过程
1. 类或接口的解析
2. 字段的解析
3. 类方法解析
4. 接口方法解析
- 初始化
- 卸载