即时编译器的去虚化是什么?

这篇具有很好参考价值的文章主要介绍了即时编译器的去虚化是什么?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

写在前面

本文隶属于专栏《100个问题搞定Java虚拟机》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!

本专栏目录结构和文献引用请见100个问题搞定Java虚拟机

解答

什么是去虚化?

对于需要动态绑定的虚方法调用来说,即时编译器则需要先对虚方法调用进行去虚化(devirtualize),即转换为一个或多个直接调用,然后才能进行方法内联。

怎样去虚化?

即时编译器的去虚化方式可分为完全去虚化以及条件去虚化(guarded devirtualization)。

完全去虚化

完全去虚化是通过类型推导或者类层次分析(class hierarchy analysis),识别虚方法调用的唯一目标方法,从而将其转换为直接调用的一种优化手段。

它的关键在于证明虚方法调用的目标方法是唯一的。

条件去虚化

条件去虚化则是将虚方法调用转换为若干个类型测试以及直接调用的一种优化手段。

它的关键在于找出需要进行比较的类型。

条件去虚化通过向代码中增添类型比较,将虚方法调用转换为一个个的类型测试以及对应该类型的直接调用。

它将借助 Java 虚拟机所收集的类型 Profile。

关于 Profile 请参考我的另一篇博客——一篇文章搞懂 JVM 的 profiling 是什么文章来源地址https://www.toymoban.com/news/detail-427822.html

到了这里,关于即时编译器的去虚化是什么?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 初学Python,用什么编译器最好呢?

    新手学Python用什么编辑器比较好?工欲善其事必先利其器,选好工具学习更高效。市面上流行的编辑器众多,根据自己的需求选择适合自己。小白选择什么编译器比较好呢?今天主要介绍SublimeText、IDLE、VIM、PyCharm、Emacs编辑器,看它们都有什么功能,挑一个最适合小白学习的

    2024年02月09日
    浏览(39)
  • Microsoft的CL编译器与GCC到底有什么区别?

    gcc -v : gcc version 11.2.0 (MinGW-W64 x86_64-ucrt-posix-seh, built by Brecht Sanders) cl : 用于 x64 的 Microsoft (R) C/C++ 优化编译器 19.29.30136 版 CL作为微软的非开源编译器,听上去似乎比开源的GNU套件GCC编译器更“高级”,但事实真的如此吗? 咱们统一使用普遍的x64架构,看看两个编译器对同一段

    2024年02月05日
    浏览(32)
  • 在makefile中,CC(编译器)和LD(链接器)代表什么?

    这些变量的名称源自相应工具的名称。通常这些缩写的含义如下: CC 代表“ C c ompiler”(在GCC缩写中,它也被视为“ c ompiler c ollection”)。 LD 是一个链接器(来自“ l ink e d itor”或“ l oa d er”)。 CPP 代表 “ C p re p rocessor” CXX 是一个 C++ 编译器

    2024年02月15日
    浏览(36)
  • C++输出编译器名称和版本以及编译器位数、C/C++常见编译器

    常见的C/C++编译器主要包括以下几种: GCC (GNU Compiler Collection):GCC是一个广泛使用的编译器套件,支持多种编程语言,包括C、C++、Objective-C等。它具有强大的优化能力和跨平台支持,并且被广泛应用于各种操作系统和开发环境。 Clang :Clang是基于LLVM的编译器前端,支持C、

    2024年02月13日
    浏览(35)
  • python在线编译器搭建,python在线编译器源码

    本篇文章给大家谈谈python在线编译器搭建,以及python在线编译器源码,希望对各位有所帮助,不要忘了收藏本站喔。 1. PyCharm集成开发环境 2. PyCharm的下载与安装 3. Pycharm的使用 3.1 创建Python项目 3.2 创建子目录 3.3 创建Python文件 3.4 切换解释器 3.5 常用快捷键 4. Pycharm常用配置

    2024年03月25日
    浏览(47)
  • 编译器(Compiler)及C/C++编译器安装(c+安装)

    目录 一、常用编程语言的编译器(compiler) 概述 二、GCC、MinGW、MinGW-w64 、TDM-GCC、Cygwin、MSYS、MSYS2的区别 三、MinGW-w64编译器套件下载及安装 四、MinGW-w64安装后,windows环境变量配置(设置) 五、编译器的运行及其与开发环境的关系、编译器的来源        机器语言是一种计算机指

    2024年02月07日
    浏览(53)
  • 探索Kotlin K2编译器和Java编译器的功能和能力

    文章首发地址 Kotlin K2编译器是Kotlin语言的编译器,负责将Kotlin源代码转换为Java字节码或者其他目标平台的代码。K2编译器是Kotlin语言的核心组件之一,它的主要功能是将Kotlin代码编译为可在JVM上运行的字节码。 编译过程: Kotlin K2编译器将Kotlin源代码作为输入,并经过词法分

    2024年02月11日
    浏览(37)
  • 【C语言】--编译及编译器

    夫学须静也,才须学也;非学无以广才,非志无以成学 个人主页:【😊个人主页】 系列专栏:【❤️系列专栏】 C语言一直以来都是初入编程的小白们的必修课,作为程序员必学语言之一,C语言自然有属于它的奥秘,接下来就由我来带领大家走进C语言的世界吧🚗🚗🚗 1、

    2024年02月13日
    浏览(44)
  • 前端框架编译器之模板编译

    编译原理:是计算机科学的一个分支,研究如何将 高级程序语言 转换为 计算机可执行的目标代码 的技术和理论。 高级程序语言:Python、Java、JavaScript、TypeScript、C、C++、Go 等。 计算机可执行的目标代码:机器码、汇编语言、字节码、目标代码等。 编译器 (Compiler):是一种将

    2024年04月28日
    浏览(31)
  • openharmony 编译LLVM编译器基础架构

    third_party_llvm-project: 管理员 liwentao_uiw dhy308 huanghuijin (1) 缺少依赖,一次安装好几个依赖 (2) case in的语法识别不了 实际上case in是没有问题的,主要是结尾需要改成Unix结尾

    2024年01月19日
    浏览(35)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包