JVM 虚拟机 ---> JVM 基础概念

文章目录

    • [JVM 虚拟机 ---> JVM 基础概念](#JVM 虚拟机 ---> JVM 基础概念)
      • [一、Java 跨平台](#一、Java 跨平台)
      • [二、JVM 的组成结构](#二、JVM 的组成结构)
      • [三、Java 代码执行流程](#三、Java 代码执行流程)
      • [四、JVM 的生命周期](#四、JVM 的生命周期)

JVM 虚拟机 ---> JVM 基础概念

一、Java 跨平台

  • Java是一种可跨平台的编程语言,我们通常把CPU处理器与操作系统构成的计算机系统整体成为叫平台
  • 不同的CPU,差异主要在底层指令集不同,指令集分为精简指令集(RISC)和复杂指令集(CISC)。每个CPU都有自己的特定指令集

**指令集:**是CPU中用来计算和控制计算机系统的一套指令集合

  • 不同的操作系统,支持不同的CPU,严格来说,不同的操作系统支持不同的CPU指令集。例如:早期的Mac操作系统只支持PowerPC,不能安装在IntelCPU上。
  • 现在WindowsLinuxMACSolaris都支持IntelAMD CPU指令集

主要原因

  • Java 可以跨平台的主要原因是有 JVM
  • 不同的平台,使用不同的 JVM

Java 源代码在编译后会生成一个 Class 文件,称为字节码文件,JVM负责将字节码文件翻译成特定平台下的机器码,然后运行

简单来讲,Java的跨平台就是因为不同版本的 JVM。只要在不同的平台上安装相应的JVM,就可以运行字节码文件.class)并运行我们编写的Java程序。

在这个过程中,我们编写的Java程序没有做任何改动,只是通过JVM的"中间层",就可以在不同的平台上运行,真正实现了"一次编译,到处运行(write once,run anywhere)"的目的。

综上所述,JVM是跨平台的桥梁和中间件,是实现跨平台的关键。首先将Java代码编译成字节码文件,然后通过JVM将其翻译成机器语言,从而达到运行Java程序的目的。因此,运行Java程序必须有JVM的支持,因为编译的结果不是机器代码,必须在执行前由JVM再次翻译

注意:编译的结果不是生成机器代码,而是生成字节码。字节码不能直接运行,必须由JVM转换成机器码。编译生成的字节码在不同的平台上是相同的,但是JVM翻译的机器码是不同的。

二、JVM 的组成结构

JVM 由 类加载器、运行时数据区、执行引擎组成

三、Java 代码执行流程

四、JVM 的生命周期

JAVA程序的执行过程简单来说包括:

  1. JAVA源代码编译成字节码;
  2. 字节码校验并把JAVA程序通过类加载器加载到JVM内存中;
  3. 在加载到内存后针对每个类创建Class对象;
  4. 字节码指令和数据初始化到内存中;
  5. 找到main方法,并创建栈帧;
  6. 初始化程序计数器内部的值为main方法的内存地址;
  7. 程序计数器不断递增,逐条执行JAVA字节码指令,把指令执行过程的数据存放到操作数栈中(入栈),执行完成后从操作数栈取出后放到局部变量表中,遇到创建对象,则在堆内存中分配一段连续的空间存储对象,栈内存中的局部变量表存放指向堆内存的引用;遇到方法调用则再创建一个栈帧,压到当前栈帧的上面。
相关推荐
plainGeekDev18 小时前
Android运行时面试题:ART和JVM的区别都搞不清,别写精通了
jvm·面试·kotlin
疯狂打码的少年1 天前
CISC vs RISC 对比
jvm·笔记
逻极1 天前
Java 从入门到精通:核心原理、最佳实践与性能优化
java·jvm·并发编程·集合框架
light blue bird1 天前
Razor Pages工序管理Web端界面化实现方案
jvm·windows·web端
小江的记录本2 天前
【JVM虚拟机】垃圾回收GC:垃圾收集器:CMS:核心原理、回收流程、优缺点、废弃原因(附《思维导图》+《面试高频考点清单》)
java·jvm·后端·python·spring·面试·maven
小江的记录本2 天前
【JVM虚拟机】垃圾回收GC:垃圾回收算法:标记-清除、标记-复制、标记-整理、分代收集(附《思维导图》+《面试高频考点清单》)
java·jvm·后端·python·算法·安全·面试
小江的记录本2 天前
【JVM虚拟机】垃圾回收GC:垃圾收集器:G1:Region分区、Mixed GC、回收流程、适用场景(高频)(附《思维导图》+《面试高频考点清单》)
java·jvm·后端·python·spring·spring cloud·面试
ID_180079054732 天前
小红书评论 API 接口详解与实战开发
java·jvm·c++
東雪木2 天前
JVM 与 Java 内存模型 专属复习笔记
java·jvm·笔记·java面试
Undergoer_TW2 天前
Colmap 进军嵌入式:SQLite 数据库从崩溃退出到自动治愈
jvm·数据库·sqlite