JVM中的类加载机制你有了解过吗?
JVM类加载机制分为以下五个步骤,需要按照该流程进行类的加载,你看看自己掌握的怎么样呢?
1.装载
1)将我们编译好的classFile以字节流的形式通过类加载器加载到我们的内存中
2) 将我们字节流所代表的静态存储结构转化为方法区的运行时数据结构
3)在我们的堆中生成一个代表这个类的java.lang.Class对象,作为对方法区中数据的访问入口
2.链接
2.1 验证校验
- 文件格式验证
- 元数据验证-----是否符合Java的语言规范
- 字节码验证------确定程序语义合法,符合逻辑
- 符号引用验证------确保下一步的解析能正常执行
2.2 准备
- 为类的静态变量分配内存,并赋值(当前类型的默认值)
private static int a = 1;那么它在我们的准备阶段他的值就是0
2.3 解析
- 解析是从运行时常量池中的符号引用动态确定具体值的过程
符号引用(方法引用、属性引用等等)转为直接引用
3.初始化
方法执行到了Clint阶段,初始化静态变量的值。
初始化静态代码块,如果存在父子静态代码块,先初始化父类静态代码块,然后再初始化子类静态代码块。
然后再初始化当前类的父类,最后初始化当前类的子类。
4. 使用
程序之间的相互调用,通过引用、赋值等一系列的操作对其进行使用。
5. 卸载
最后当我们不使用的时候,也就是销毁一个对象的时候,一般情况下中有JVM垃圾回收器完成。代码层面的销毁只是将引用置为null。