JVM执行模式与即时编译(JIT)

JVM执行模式与即时编译(JIT)

参考:https://www.cnblogs.com/lyhero11/p/5080306.htmlhttps://www.aliyun.com/jiaocheng/1331387.html

JVM编译执行过程

执行模式

#查看虚拟机执行模式
java -version
#解释模式
-Xint
#编译模式
-Xcomp
#混合模式
-Xmixed

解释执行
翻译一句执行一句,不加筛选的将全部代码编译成机器码,不论其执行效率是否有编译价值。
.java----javac.exe编译器---->.class------java.exe解释执行器---->加载到JVM中执行
编译模式
混合模式
在翻译成.class时,经过JIT环境变量进行判断,是否属于“热点代码”(多次调用的方法,或循环等)。
如是,走JIT编译为具体硬件处理器(如sparc、intel)机器码。如否,则直接由解释器解释执行

编译方式

1、动态编译(dynamic compilation)指的是“在运行时进行编译”;与之相对的是事前编译(ahead-of-time compilation,简称AOT),也叫静态编译(static compilation)。
2、JIT编译(just-in-time compilation)狭义来说是当某段代码即将第一次被执行时进行编译,因而叫“即时编译”。JIT编译是动态编译的一种特例。JIT编译一词后来被泛化,时常与动态编译等价;但要注意广义与狭义的JIT编译所指的区别。
3、自适应动态编译(adaptive dynamic compilation)也是一种动态编译,但它通常执行的时机比JIT编译迟,先让程序“以某种式”先运行起来,收集一些信息之后再做动态编译。这样的编译可以更加优化。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容