0%

JVM简介

JVM简介

java语言虽然不是最好的语言,但是JVM是最好的虚拟机,可以作为很多语言的平台,如java、scala、kotlin等,JVM是一个二进制字节码的运行环境,负责装载字节码到其内部,解释/编译为对应平台上的机器指令执行。每一条java指令,JVM规范中都有详细定义,如何取操作数,如何处理操作数等

  • 一次编译,到处运行
  • 自动内存管理
  • 自动垃圾回收功能

java代码的执行流程

java代码执行流程
  • 首先java源码(*.java)会先经过java编译器编译成字节码文件(*.class)

  • JVM使用类加载器装载字节码文件

  • 类加载完成之后,会进行字节码检验

  • 字节码检验通过后,JVM解释器会把字节码翻译成机器码交由操作系统执行,JVM同时还提供了JIT(Just In Time)即时编译器

整体结构

JVM整体结构

将每个模块细分的话就是

JVM整体详细结构

首先将class字节码文件在类装载器子系统(Class Loader SubSystem)中有三个阶段

  • 1.加载 到内存中需要用到类加载器
  • 2.链接 链接中包含 验证、准备和解析
  • 3.初始化

加载完之后就进入内存,即运行时数据区,运行时数据区包含有

  • 方法区
  • 虚拟机栈
  • PC寄存器
  • 本地方法栈

执行引擎包含解释器、即时编译器(即时编译器中的步骤 中间代码生成器—> 代码优化器 —>目标代码生成器)、分析器、垃圾回收器