JVM 执行引擎

这篇具有很好参考价值的文章主要介绍了JVM 执行引擎。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

javac 编译器将 Java 代码编译成 class 文件 (前期编译),再给 JVM 根据不同平台 , 通过执行引擎转为机器码

image.png

JVM 用 : 混合模式 (解释+编译) :

  • 对不常用代码,不浪费时间编译成机器码,用时以解释运行
  • 对热点代码,用编译方式,追求更高效率

解释执行

Interpreter : 将字节码逐条换成机器码

  • 刚开始只用解释执行,当某些方法或代码块 , 执行较频繁,就转为热点代码

即时编译器

Just-In-Time compilation(JIT) : 将字节码编译成可执行文件,运行速度快

  • 即时编译器将热点代码编译成机器码,并优化,存到内存中

HotSpot 内置两个JIT :

  • C1 : Client Compiler : 适用执行时间短或 对启动性能有要求的程序
  • C2 : Server Compiler : 适用执行时间长或 对峰值性能有要求的程序

Java7 后,HotSpot 用分层编译的方式

  • 热点方法先被 C1 编译,再热点中的热点 , 被 C2 再编译

AOT

Java9 后 ,引入AOT(Ahead-Of-Time) 编译器

  • 程序运行前,将字节码转为机器码
  • 优势 :不用运行时 , 消耗资源来进行即时编译
  • 劣势 : 无法感知程序运行时信息,无法基于类层次分析的完全虚方法内联,或基于程序 profile 的投机性优化

Graal VM

Java10 后,引入 Graal 编译器文章来源地址https://www.toymoban.com/news/detail-511222.html

  • 比 C1, C2,模块化明显,更易维护
  • Graal 既能动态编译器,有能静态编译器
  • 能编译不同的编程语言 , 成为二进制码,实现不同语言的无缝切换

到了这里,关于JVM 执行引擎的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 49天精通Java,第34天,finalize、引用计数、JVM停止复制、JVM即时编译器

    在Java中,finalize()是一个Object类的方法,用于在对象被垃圾收集器回收之前执行一些清理操作。当一个对象成为垃圾时,它的finalize()方法会被自动调用。 finalize()方法的语法格式如下:

    2024年02月07日
    浏览(46)
  • 数栈产品中的代码编译器

    我们是袋鼠云数栈 UED 团队,致力于打造优秀的一站式数据中台产品。我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值。 本文作者:奇铭 目前数栈的多个产品中都支持在线编辑 SQL 来生成对应的任务。比如离线开发产品和实时开发产品。在使用 MonacoEdito

    2024年02月05日
    浏览(68)
  • 汇编代码生成和编译器的后端

    基于SLR(1)分析的语义分析及中间代码生成程序-CSDN博客 https://blog.csdn.net/lijj0304/article/details/135097554?spm=1001.2014.3001.5501 在前面编译器前端实现的基础上,将所生成的中间代码翻译成某种目标机的汇编代码,实现编译器后端实现的任务。然后进一步实现程序的输入是源程序,输出

    2024年01月21日
    浏览(44)
  • C++入门(小白篇1—编译器安装-代码注释等)

    最近想学一下一下C++看了一些博客内容写的倒是很充实,但是,细节不到位,我是有Python基础的,所以学习来蛮快的,但是对于小白的话,有好多小细节大多数博客还是不够详细,由此我想写一份相对细节一点的 我选择的是 【Red Panda Dev-C++】,官网:点我 1、这里可以改背景

    2024年02月13日
    浏览(37)
  • 【C++】在线编译器推荐,让你随时随地编写代码

    描述 文中所有网址,在 结论 中有汇总。 环境 版本号 描述 文章日期 2023-06-14 操作系统 Win11 - 21H2 - 22000.1335 Python 3.7.1 frida.exe 15.0.18 Repl.it 官网地址: https://repl.it/languages/cpp 需要登录 支持shell ,也就是说用户完全可以使用该linux服务器。 支持调试 支持各种其他工具 支持项目

    2024年02月15日
    浏览(53)
  • C++代码性能优化的好处与缺点?有哪些编译器优化选项?

    性能优化是C++编程中的一个重要方面,它可以带来许多好处,但也有一些潜在的缺点。 以下是C++代码性能优化的一些优缺点: 优点: 提高执行速度 : 优化后的代码可以更快地执行,这对于需要处理大量数据或需要快速响应的应用程序尤其重要。 减少资源消耗 : 优化可以减少

    2024年03月27日
    浏览(53)
  • 【Java可执行命令】(一)编译工具javac:从源代码到字节码,深入解析Java编译工具 javac ~

    Java 编程语言的可执行命令程序 javac 是 Java Development Kit (JDK) 的一部分,旨在将 Java 源代码编译为可执行的字节码文件。 javac 的设计目的是为了支持 Java 的跨平台特性,使开发人员能够编写一次代码,然后在不同的操作系统上运行。 javac 是 Java 编译器的命令行前端,它将 Ja

    2024年02月16日
    浏览(31)
  • 链接文件学习(七):英飞凌MCU Tasking编译器LSL链接文件解析 及代码变量定位方法

    目录   1、Tasking的链接文件 1.1、DSRAM中的数据存放 1.2、PFlash中的代码存放 1.3、LMU 1.4、PSRAM 1.5、UCB 2、代码与变量定位

    2024年02月07日
    浏览(52)
  • VS2019编译器修改背景壁纸(写代码背景不再单薄,试试换一张清晰的美女照片)

    第一步:打开vs2019编译器,在上方菜单栏找到【扩展】-【管理扩展】-【联机】,在右方搜索栏搜索“claudiaIDE”,找到ClaudiaIDE 2019,点击下载 第二步:下载完成后,关闭所有的VS文件,关闭VS后回到桌面,发现有一个“VSIX Installer”的弹窗,选择“Modify”进行安装,等到修改完

    2023年04月21日
    浏览(59)
  • Linux C++性能优化秘籍:从编译器到代码,探究高性能C++程序的实现之道

    随着大数据、人工智能等技术的飞速发展,程序性能优化的重要性愈发突出。优化性能可以降低资源消耗、提高系统响应速度,从而在有限的硬件资源下,实现更高的吞吐量和处理能力。此外,性能优化也有助于降低能耗、减少散热问题,延长硬件使用寿命。 Linux操作系统具

    2023年04月09日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包