90-谈谈类的装载步骤

总共分为:加载,检查,准备,解析,初始化五个步骤

来,看图

img

引用孙卫琴《Java面向对象编程》的一段描述,帮助大家更好理解符号引用和直接引用的区别

在类的加载过程中的解析阶段,Java虚拟机会把类的二进制数据中的符号引用 替换为 直接引用,如Worker类中一个方法:

1
2
3
public void gotoWork(){      
car.run(); //这段代码在Worker类中的二进制表示为符号引用
}

在Worker类的二进制数据中,包含了一个对Car类的run()方法的符号引用,它由run()方法的全名 和 相关描述符组成。在解析阶段,Java虚拟机会把这个符号引用替换为一个指针,该指针指向Car类的run()方法在方法区的内存位置,这个指针就是直接引用。