总共分为:加载,检查,准备,解析,初始化五个步骤
来,看图
引用孙卫琴《Java面向对象编程》的一段描述,帮助大家更好理解符号引用和直接引用的区别
在类的加载过程中的解析阶段,Java虚拟机会把类的二进制数据中的符号引用 替换为 直接引用,如Worker类中一个方法:
1 | public void gotoWork(){ |
在Worker类的二进制数据中,包含了一个对Car类的run()方法的符号引用,它由run()方法的全名 和 相关描述符组成。在解析阶段,Java虚拟机会把这个符号引用替换为一个指针,该指针指向Car类的run()方法在方法区的内存位置,这个指针就是直接引用。