vlambda博客
学习文章列表

Java是解释执行(乄)

“Java 是解释执行”这句话只能说半对(乄)。


解析

   Java 源代码通过 Javac 编译成为字节码(bytecode),然后在运行时,通过 JVM内嵌的解释器将字节码转换成为最终的机器码。

   但是常见的 JVM,如 Oracle JDK 提供的 Hotspot JVM,都提供了 JIT(Just-In-Time)编译器,也就是动态编译器,JIT 能够在运行时将热点代码编译成机器码,这种情况下部分热点代码就属于编译执行,而不是解释执行了。

    所以在运行时,JVM 会通过类加载器(Class-Loader)加载字节码,解释或者编译执行。


【JVM相关参数】

-Xmixed: 默认为解释和编译混合模式,启动速度较快,对热点代码实行检测和编译。

-Xcomp: 关闭解释器,纯编译模式,执行很快,启动很慢。

-Xint: 只使用解释模式,启动很快,执行稍慢。


【测试】

以下是VM options三个参数对于n个循环的简单测试情况:

1)-Xmixed 混合模式


2)纯编译模式

Java是解释执行(乄)


3) 解释模式


召唤妲己:

你很有能力,幸福密码来破译;你很有张力,浏览开心与如意;你很有耐力,删除烦恼与失意;你很有实力,快乐福气你点击;祝程序员朋友们,运行幸福程序,愿你们永远有魄力,散发耀眼魅力!