fin*_*ity 7 java compilation interpretation
我读过很多关于"解释"和"编译"的定义和陈述.但我仍然非常困惑.
从技术上讲,真正的解释和汇编之间的区别是什么?让我详细说明(请纠正我可能有的任何错误概念):
在java中,源代码被"编译"成ByteCode,然后将其"解释"和/或"及时编译"成机器代码.但是,及时编译和解释之间有什么区别?我的意思是,最后,据我猜测,主机的CPU只运行机器代码.因此,在解释中,指令也被转换成可由CPU理解的机器代码.那么,我们在哪里绘制即时编译和解释之间的界限?
PS这是我的观念.这可能是完全错误的.在这种情况下,请原谅我的愚蠢并纠正我.
谢谢.
1.坦率地说, java同时具有编译器和解释器的想法是一个神话,它的行为被标记为编译器和解释器。
2. Java编译器将人类可读的代码编译为字节码。然后,JIT(即时编译器)在运行时将其转换为机器级可执行代码。
3.在运行时 JIT 识别代码中运行时密集的部分,然后将其转换为机器级可执行代码,这部分代码称为Hot-Spot,这就是为什么JIT 被称为热点编译器。
4. JIT使用虚拟内存表(V-table),它是指向类中方法的指针。然后Hot-Spot代码被转换成它的机器级可执行代码,它的地址存储在这里,当再次调用这部分时,就直接通过这个存储的地址来取。This behavior of JIT to keep compiling small amount of code during Run time is assumed to be 解释行为和the JIT behaviour of storing this for later use is assumed as 编译。
5、虚拟内存表还有一个表,存放字节码的地址,需要时可以使用。