
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
解释器与编译器的学习应用是每一位Java编程开发程序员都需要熟练掌握的一个编程能力,下面我们就通过案例分析来简单了解一下,解释器与编译器的概念与用法。
1、解释器
Java程序初是通过解释器(Interpreter)进行解释执行的,当虚拟机发现某个方法或代码块的运行特别频繁的时候,就会把这些代码认定为“热点代码”(hotspotcode)。正因为如此,我们的hotspot的虚拟机就是因此而得名。
解释器优点
(占用空间较少)解释执行占用更小的内存空间。
(启动和次执行速度较快)当程序需要迅速启动的时候,解释器可以先发挥作用,省去了编译的时间,立即执行。
(提高动态性和移植性)当处于程序的动态效果下,如果预先编译好所有相关的静态本地代码后,就无法实现动态化扩展,以及提高移植到其他计算机平台架构下的能力
2、编译器
为了提高热点代码的执行效率,在运行时,即时编译器(JustInTimeCompiler,下文称JIT编译器)会把这些代码编译成与本地平台相关的机器码,并进行各种层次的优化。
编译器优点
(提高运行速度)在程序运行时,随着时间的推移,编译器逐渐发挥作用,把越来越多的代码编译成本地代码之后,可以获得更高的执行效率。
(逆转优化)同时,当编译器进行的激进优化失败的时候,还可以进行逆优化来恢复到解释执行的状态。
3、解释器与编译器并存的架构(流程)
如果Java程序需要迅速启动和执行时,或者只是执行一次,解释器可先发挥作用,省去编译时间,立即执行程序运行后,随着时间推移,JIT编译器逐渐发挥作用,把越来越多的代码编译成本地代码后,可获取更高执行效率。
程序运行环境中内存资源限制较大(如部分嵌入式系统中),可使用解释执行节约内存,反之可使用JIT编译执行提升效率
解释器还可作为JIT编译器激进优化时的一个“逃生门”,让编译器根据概率选择一些大多数时候都能提升运行速度的优化手段,当激进优化的假设不成立时可通过逆优化(Deoptimization)退回到解释状态继续执行
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。