Execution Engine:对命令进行解析 说的是“加载→验证→准备→解析→初始化” 中的解析么?
来源:6-3 JVM如何加载class文件
枯燥才能孤傲
2019-08-30
Execution Engine:对命令进行解析 说的是“加载→验证→准备→解析→初始化” 中的解析么?
网上对 “解析” 的说明是 “是虚拟机将常量池内的符号引用替换为直接引用过程。” 请问下老师符号引用替换直接引用值得是什么呢?符号引用这我不是很明白。
写回答
1回答
-
翔仔
2019-08-31
同学好,加载→验证→准备→解析→初始化属于class loader加载类的过程,而Execution Engine在classloader执行之后,以Java 字节码指令为单元,读取Java字节码;而后由解释器或者即时编译器(JIT Compiler)将字节码转化成平台相关的机器码。
然后再来说说classloader的解析,
public void readytoWork(){ farmer.work(); //这段代码在类中的二进制表示为符号引用 }
在该类的二进制数据中,包含了一个对Farmer类的work()方法的符号引用,它由work()方法的全名 和 相关描述符组成。在解析阶段,Java虚拟机会把这个符号引用替换为一个指针,该指针指向Farmer类的work()方法在方法区的内存位置,这个指针就是直接引用。
212019-09-03
相似问题