JVM语言无关性的基础是编译器--不同语言,通过不同的编译器,都编译为字节码。
JVM平台无关性的基础是JVM--相同字节码,通过不同的JVM,在不同平台上解释执行。
https://www.cnblogs.com/guocai/archive/2012/10/18/2730048.html
机器码顾名思义就是机器能够读懂的代码,人不太可读的代码。既然机器能读懂,那么不同机器,必然只能读懂它自己的代码。所以,机器码和机器硬件即cpu是强相关性的。比如intel和AMD,相同一段高级编程语言,最终生成的可执行机器码就会不一样。
方法内联:
java JIT编译,会进行方法内联优化。比如方法foo1调用了foo2,foo2调用了foo3,由于foo2执行的频率较高,所以,foo2被内联到foo1里面。那么调用foo1后,就不用在调用foo2了,foo2的实现被写到foo1里面了。方法内联,可以保证完整功能同时,减少方法的调用次数。
一、方法内联
方法内联 指的是在即时编译过程中遇到方法调用时,直接编译目标方法的方法体,并替换原方法调用。
注:
- 方法内联属于即时编译期的优化技术;
- 即时编译的过程是字节码被解析成LTR图,优化LTR图,再由优化过的IR图生成机器码的过程;字节码 -> 高级中间代码(HIR) -> 低级中间代码(LTR) -> 机器码。如下图。
-
解析指的是即时编译器对字节码做的动作,是字节码到IR图的转换;
即时编译器过程.png
网友评论