
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
解释器和编译器是程序员在学习java编程开发技术的时候会接触到的编程知识点,下面我们就通过案例分析来了解一下,java编程开发解释器和编译器的用法分析。
什么是即时编译器?
Java程序初是通过解释器进行解释执行的,当虚拟机发现某个方法或代码块的运行特别频繁,就会把这些代码认定为“热点代码”(HotSpotCode)。
为了提高热点代码的执行效率,在运行时,虚拟机将会把这些代码编译成与本地平台相关的机器码,并进行各种层次的优化,完成这个任务的编译器成为即时编译器(JustInTimeCompiler,JIT编译器)。
解释器和编译器
许多主流的商用虚拟机,都同时包含解释器和编译器。
当程序需要快速启动和执行时,解释器先发挥作用,省去编译的时间,立即执行。
当程序运行后,随着时间的推移,编译器逐渐发挥作用,把越来越多的代码编译成本地代码,可以提高执行效率。
如果内存资源限制较大(部分嵌入式系统),可以使用解释执行节约内存,反之可以使用编译执行来提升效率。同时编译器的代码还能退回成解释器的代码。
为什么要采用分层编译?
因为即时编译器编译本地代码需要占用程序运行时间,要编译出优化程度更高的代码,所花费的时间越长。
分层编译器有哪些层次?
分层编译根据编译器编译、优化的规模和耗时,划分不同的编译层次,包括:
0层:程序解释执行,解释器不开启性能监控功能,可出发1层编译。
1层:也成为C1编译,将字节码编译为本地代码,进行简单可靠的优化,如有必要加入性能监控的逻辑。
2层:也成为C2编译,也是将字节码编译为本地代码,但是会启用一些编译耗时较长的优化,甚至会根据性能监控信息进行一些不可靠的激进优化。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。