`
郑富成
  • 浏览: 15361 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

解释器和编译器区别(一)

阅读更多

最近在看《JAVA虚拟机》这本书作者写得不错,特别是由国人原创的。

根据书中,写出部分自己的理解(部分可能与作者的意识不一致)

 

关于对于不同的虚拟机,基本都具有解释器和编译器

 

编译器:

对于语句进行编译,使之成为本地机器码,因此运行速度将相当快,但是启动也会非常慢。

 

解释器:

只在执行时,在进行编程为本地机器码,所以运行速度慢,但是因不用进行编译成机器码,所以启动快。

 

对此,不同的虚拟机,也将采取分步的优化,当然也有对应防偏激进化的逃生门。

进行优化的是以作为热点的代码段,进行编译为本机机器码,而判断是否热点,

有两分法:

1、周期性检测堆栈中的对象,属于抽样分法,实现简单,但是很难获取真正的热点程序段。

2、为每个方法或者程序段建立计数器,实现麻烦,且需要消耗部分内存,但是数值准确。

而计数器需要有阙值来进行判断是否已经为热点。

判断分法:

1、方法调用计数器

2、回边计数器

 

 

以后会继续写出后续篇。谢谢~

希望更多人把时间花在生活、陪家人和女朋友身上,而不是敲代码上。

 

分享到:
评论

相关推荐

    解释器与编译器的区别

    了解解释器与编译器的区别对于选择合适的编程语言和理解程序的执行流程至关重要。在实际开发中,开发者可能会结合使用编译器和解释器,例如Java的编译和解释过程,或者Python的Jython和Pypy等实现,这些都提供了不同...

    PL0解释器与编译器的分离及其功能扩展

    首先,让我们了解编译器和解释器的区别。编译器是将源代码(高级语言)一次性转化为目标代码(机器语言)的程序,而解释器则是逐行读取源代码并直接执行。对于PL0语言,我们可以分别实现这两个组件来更好地理解和...

    PL0的解释器与编译器的分离

    标题中的“PL0的解释器与编译器的分离”是指在编程语言处理系统中,将PL0语言的编译器和解释器作为两个独立的组件进行设计和实现。这样的设计使得编译过程和执行过程可以分开,为理解和调试提供了便利,同时也允许更...

    Lua5.3.5解释器+编译器

    在Windows系统上,Lua解释器通常是一个名为`lua.exe`的可执行文件,用户可以直接通过命令行输入Lua脚本来运行。 Lua编译器,通常指的是luac,是将Lua源代码编译成字节码的工具。这种预编译过程可以提高代码的执行...

    Lua5.3 源码 编译器 解释器 库文件

    官网下载的源码 然后自己生成了编译器 解释器和库文件 只需要把你的lua文件放在与lua exe同一目录然后运行lua exe 输入dofile "lua文件名" 回车就可以运行lua文件啦 方便新手用

    tiny 编译器及解释器.rar

    首先,我们要明确编译器和解释器的区别。编译器是一次性将整个源代码转换成目标代码(通常为机器语言)的程序,而解释器则是逐行或逐语句地执行源代码,不生成独立的目标代码。Tiny编译器与解释器项目结合了这两种...

    C0程序编译器解释器实现

    C0程序编译器与解释器的实现是一个基础但至关重要的步骤,对于理解计算机科学中的编译原理和解析技术有着深远的意义。C0语言是一种简化的编程语言,通常用于教学目的,它帮助初学者理解高级语言如何转换为机器可执行...

    详解python编译器和解释器的区别

    ### 详解Python编译器与解释器的区别 #### 引言 随着计算机技术的发展,编程语言作为连接人类思维与计算机操作的重要桥梁,其种类日益繁多。不同的编程语言有着不同的特性,这些特性往往决定了它们更适合解决哪一类...

    lua5.3.5最新版安装文件(包含c源码、解释器、编译器、静态库、用户手册和一个2048游戏脚本)

    lua5.3.5最新解释器、编译器、静态库、用户手册及c源码的安装包,附加2048游戏脚本,完整实用资源,请下载。 Lua是一个小巧的脚本语言。它是于1993年开发的。 其设计目的是为了通过灵活嵌入应用程序中从而为应用...

    oosrc.rar_C语言解释器_semantic_绘图 编译器_解释器_语法分析

    “oosrc”文件可能包含了实现上述功能的源代码,这为我们提供了一个学习和研究编译器和解释器工作原理的实践案例。通过阅读和分析这些代码,开发者可以加深对编译原理的理解,掌握如何将理论应用到实际项目中。 ...

    cmm解释器大作业

    总的来说,"cmm解释器大作业"是一个全面的编程实践,涵盖了编译器设计的核心环节,对于提升学生的编程素养和技术能力具有极大的价值。通过这个项目,学生不仅能深入理解编程语言的底层机制,还能培养出严谨的逻辑...

    一个小型编译器源码

    10. **解释器与编译器的区别**:解释器直接执行源代码,而编译器则先将其转换为机器码后再执行。两者各有优缺点,适用于不同的场景。 通过分析“Compiler-master”项目,你可以学习到如何从零开始构建一个小型...

    基于Java实现的C语言编译器解释器(实现词法分析、语义分析、绘制图像与窗口建立等).zip

    2.在我设计的解释器中,我以语义分析接口作为整个程序的入口(实现语义分析的代码块继承了语法分析的代码块,同时采用“语法制导翻译”方法,这样就能做到两个过程合为一个阶段,即在语法分析的过程中,执行语义分析)...

    一个简单的文本编译器

    这可能是一个解释器,也可能是直接在硬件上执行的机器码。 8. **编程语言设计**:创建一个编译器也意味着设计一种编程语言,即使是最简单的形式。这包括定义语言的语法规则、数据类型、控制结构以及如何表示和执行...

    CMM编译器(用C#写的一个c语言子集的解释器)

    这是我在大三的时候解释器实践的课程设计,是用C#开发的,包括词法分析、语法分析和编译执行阶段,文档比较齐全,可供初步学习解释器的同学看看,但不鼓励直接拿来当作业用,起码也得自己看看源码,分析分析下,对...

    BrainF**k编程语言的解释器,调试器和编译器——CPBF 2.1.1

    一个运行在控制台界面下的BrainF**k编程语言的解释器,调试器和编译器,由作者本人上传,且不断更新中。详见:http://tieba.baidu.com/p/3606138253

    lua-5.1.4 的 lib 文件 及 解释器 编译器

    此压缩包包含的是Lua 5.1.4版本的相关文件,主要包括库文件(lib)和解释器(interpreter),以及可能的编译器工具。 ** Lua 5.1.4 库文件(lib)** 库文件是预编译的二进制模块,允许程序在运行时动态链接到Lua的...

    java编译器,解释器构造实践

    在编程世界中,Java是一种广泛使用的高级编程语言,它的运行涉及到编译器和解释器的协同工作。"java编译器,解释器构造实践"这一主题深入探讨了这两个关键组件的构建过程及其在软件开发中的作用。以下是相关知识点的...

    自制脚本语言的LR(1)编译器与解释器

    LR(1)编译器与解释器是计算机科学中用于解析和执行自定义脚本语言的重要工具。在本文中,我们将深入探讨LR(1)解析技术及其在自制脚本语言中的应用,包括如何处理函数定义、递归调用、字符串和注释。 LR(1)解析器是...

    ohm, 用于构建解析器解释器编译器等的库和语言.zip

    ohm, 用于构建解析器解释器编译器等的库和语言 欧姆 是一个解析器生成器,由一个库和一个特定的领域语言组成。 你可以使用它解析自定义文件格式,或者快速构建解析器。解释器和编程语言的编译器。 基于xml的欧姆定律...

Global site tag (gtag.js) - Google Analytics