Java的解释执行是先全部解释完后再执行还是边解释边执行?

        它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。Java语言是解释型的。如前所述,Java程序在Java平台上被编译为字节码格式,然后可以在实现这个Java平台的任何系统中运行。在运行时,Java平台中的Java解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。既然Java语言是解释型的,那它就是边解释边执行咯 补充: 不过,虽然java是解释型的语言,但是在不同的平台环境上的java虚拟机也是会有一次性解释然后执行的情况的!!! 追问: java程序在一个平台上被解释成了二进制目标代码,退出java程序后,再运行java程序时,还需要再次解释吗?如果需要再次解释,就显得浪费资源;不再次解释,程序就不能“一次编写,到处运行”。 回答: 就hotspot虚拟机而言,有两种模式,一是-client,二是-server -client模式下,是逐条解释执行的 -server模式下,先解释执行,然后jvm统计执行热点,将这些热点代码仔细优化编译成本地代码,然后执行本地代码,当这个热点不再是热点的时候,释放编译的代码,重新解释执行 其它的jvm可能在一启动的时候就全部编译成本地代码 总之,JVM会自行优化!

就hotspot虚拟机而言,有两种模式,一是-client,二是-server

        -client模式下,是逐条解释执行的

        -server模式下,先解释执行,然后jvm统计执行热点,将这些热点代码仔细优化编译成本地代码,然后执行本地代码,当这个热点不再是热点的时候,释放编译的代码,重新解释执行。

其它的jvm可能在一启动的时候就全部编译成本地代码

诸如此类,没有强制规定,jvm实现者想怎么做都可以,只要不改变java相关的语义

Java 字节码执行有两种方式:

        (1). 即时编译方式:解释器先将字节码编译成机器码,然后执行该机器码。

        (2). 解释执行方式:解释器通过每次解释并执行一小段代码来完成java字节码程序所有的操作。

通常采用第二种方法。

JVM会自行优化!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 这篇文章是我之前翻阅了不少的书籍以及从网络上收集的一些资料的整理,因此不免有一些不准确的地方,同时不同JDK版本的...
    高广超阅读 16,163评论 3 83
  • 谈谈你对Java平台的理解?“Java是解释执行”,这句话正确吗? 典型回答 Java本身是一种面向对象的语言,最...
    沐小晨曦阅读 1,457评论 0 3
  • 现在就像困在一个狮子里 不知道应该去做什么 去改变什么 如果要改变 你需要拿出一点勇气 而不是整日空口说白话 马上...
    神奇的面条阅读 321评论 0 0
  • 看云听风阅读 344评论 0 0
  • 今天,Boss对我说“你好严肃,我有时就担心你在这不开心。”好像每个Boss都提醒过我,我以为自己是阳光灿烂的女子...
    黄家小妞阅读 453评论 0 0

友情链接更多精彩内容