美文网首页
二、JVM系列(从源代码到机器码,发生了什么?)

二、JVM系列(从源代码到机器码,发生了什么?)

作者: 大虾啊啊啊 | 来源:发表于2021-04-27 14:10 被阅读0次

前端编译器:源码到字节码

前端编译器也就是我们说的JavaC编译器,它将Java源代码编译成了字节码(class文件)


image.png
public class Demo{
   public static void main(String args[]){
        System.out.println("Hello World!");
   }
}

例如以上的Java源代码通过JavaC编译器编译后生成一下Class文件

> javac Demo.java
> ls 
Demo.java Demo.class

JIT编译器:从字节码到机器码

字节码操作系统是不认识的,也不能运行。当源代码编译成字节码之后有两种选择:
(1)使用Java解释器执行字节码
(2)使用JIT编译器将字节码转换为本地机器代码
两种区别在于前者启动速度快,但运行速度慢。后者启动速度慢,但运行速度快,因为JIT编译器完成第一次编译之后,其会将生成的机器码保存下来,下次直接运行。而我们知道机器码的运行肯定是快于JAVA解释器的。

AOT编译器:源代码到机器码

在程序执行前,生成JAVA方法的本地代码,以便程序运行的时候直接使用本地代码。

小结

在JVM中有三个非常重要的编译器,分别是:前端编译器、JIT编译器、AOT编译器。
(1)前端编译器,也就是我们最常见的Javac编译器,在我们安装JDK的目录中有一个JavaC工具就是它。
JavaC编译器将Java源代码编译成Java字节码文件(也就是我们说的class文件)
(2)JIT编译器最常见的是HotSpot虚拟机中的Client Compiler和Server Compiler,其将字节码文件编译成本地机器代码。
而AOT编译器则将源代码直接编译成本地机器代码

相关文章

  • 二、JVM系列(从源代码到机器码,发生了什么?)

    前端编译器:源码到字节码 前端编译器也就是我们说的JavaC编译器,它将Java源代码编译成了字节码(class文...

  • JVM 基础篇

    什么是JVM Write Once Run Everywhere 软件层面机器码翻译( .class ====>...

  • JVM

    [TOC] 什么是JVM 软件层面机器码翻译 内存管理jvm JVM运行数据区 程序计数器:指向当前线程正在执行的...

  • Other Linker Flags

    前言 一个程序从代码到执行文件需要经历如下几个阶段:源代码->预处理->编译->汇编->机器码->链接->可执行文...

  • JVM介绍系列文章

    知晓JVM系列(一):对JVM总览知晓JVM系列(二):JVM内存管理机制与优化初探知晓JVM系列(三) :常用的...

  • 深入剖析JVM内存模型

    一,对应的源代码 二,对象头 二,jvm内存模型图

  • JVM

    简介 Jvm 系列一:Java类的加载机制Jvm系列二:JVM内存结构 --内存泄漏与内存溢出Jvm系列三:GC算...

  • Other Linker Flags

    链接器 从C代码到可执行文件经历的步骤是: 源代码 > 预处理器 > 编译器 > 汇编器 > 机器码 > 链接器 ...

  • iOS-framework的补充

    编译过程: 从C代码到可执行文件经历的步骤是:源代码 > 预处理器 > 编译器 > 汇编器 > 机器码 > 链接器...

  • jvm垃圾清理机制

    更多参考GC及JVM参数浅析JAVA的垃圾回收机制(GC)JVM系列三:JVM参数设置、分析jvm系列 (二) -...

网友评论

      本文标题:二、JVM系列(从源代码到机器码,发生了什么?)

      本文链接:https://www.haomeiwen.com/subject/sswurltx.html