[Java高并发编程详解]类的加载过程(未完待续...)
程序员文章站
2022-05-04 10:07:17
...
类的加载阶段
各个阶段讲解
加载阶段:主要负责查找并加载class文件
连接阶段:
验证:确保class文件的正确性,比如版本,class的魔术因子
准备:为类的静态变量分配内存,并且为其初始化默认值
解析:把类中的符号引用转换为直接引用
初始化阶段: 为类的静态变量赋予正确的初始值(代码编写阶段给定的值)
类的主动使用和被动使用
JVM虚拟机规定,每个类或接口 首次主动使用 才会对其进行初始化
主动使用(6种情况会导致类的初始化)
- 通过new关键字,会导致类的初始化
- 访问类的静态变量
- 访问类的静态方法
- 对某个类的反射操作
- 初始化子类会导致父类的初始化
- 启动类(比如在执行main函数所在的类会导致该类的初始化)
特殊情况
- 通过子类使用父类的静态变量只会导致父类的初始化
- 引用类的静态变量不会导致类的初始化,但是一些特殊情况会导致类的初始化. 例如:
public final static int RANDOM = new Random().nextInt();
引用这个静态变量会导致类的初始化,因为RANDOM需要进行随机函数的计算.在类的加载和连接阶段都是不可以进行对其进行计算,所以需要初始化之后才能对其赋值.
下一篇: 再看数据库(2)视图