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()方法在方法区的内存位置,这个指针就是直接引用。

2
1
枯燥才能孤傲
好的谢谢翔仔老师
2019-09-03
共1条回复

剑指Java面试-Offer直通车 百度资深面试官授课

招聘季即将到来,让百度资深面试官来为你的高薪Offer保驾护航

8427 学习 · 1870 问题

查看课程