提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
JVM之编译器
编译+解释混合模式
- java是解释执行的,一个class文件loading到内存中后,通过java的解释器【
bytecode intepreter
】来执行。 - java中有一个JIT【
Just In-Time compiler
】即时编译器,指的是有某些代码需要把他编译成为本地代码来执行 - java是解释与编译混合的模式,即想解释就解释,想编译就编译
- java默认的是混合模式
- 使用解释器
- 热点代码编译
假如有段代码,里面有循环,在执行的时候一开始是在解释器执行,结果在执行的时候有某段方法或者说某段方法,或者某一段循环,java虚拟机发现这段代码执行的频率特别高,java虚拟机觉得重复操作,干脆就把这段重复的代码编译成本地代码,将来在执行的时候就不需要进行解释执行了,直接在本地进行执行,大大提升了效率。
热点代码检测
下面有段代码循环遍历100000次查看三种类型的时间
- 点击idea这个按钮
- 打开,这里Java虚拟机默认混合模式
- 运行结果,大约平均时间4s左右
- 切换为纯解释型,查看多长时间,
半天没有反应
- 纯编译模式大约3点多秒,比混合的快不少