当前位置: 首页 > news >正文

JVM引入

虚拟机与 JVM

虚拟机(Virtual Machine),就是一台虚拟的计算机。它是一款软件,用来执行一系列的虚拟计算机指令。

虚拟机可以分为系统虚拟机程序虚拟机

  • Visual Box、VMware 就属于系统虚拟机,它们完全是对物理计算机的仿真,提供了一个可与逆行的完整操作系统的软件平台。
  • 程序虚拟机的经典代表就是Java虚拟机,它专门为执行单个计算机程序而设计,在Java虚拟机中执行的指令我们称为Java字节码指令
  • 在虚拟机上运行的软件都被限制于虚拟机提供的资源中。

上面把JVM叫做Java虚拟机其实并不是特别合适,因为现如今不只有Java可以使用JVM,如Kotlin、Groovy这些,都可以编译为字节码文件(所有语言编译后的JVM字节码文件均遵循JVM规范),在JVM上运行。

这也是Java为什么是跨平台语言的原因,因为字节码是统一的

JVM

JVM 的作用

Java虚拟机就是二进制字节码的运行环境,负责装在字节码到其内部,解释/编译为对应平台的机器指令执行。每一条 Java 指令,Java 虚拟机规范中都有详细定义,如:怎么取操作数,怎么处理操作数,处理结果放在哪里。

特点:

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

JVM 的位置

image-20251012235505871

1760284892260.png

JVM 的整体结构

  • HotSpot VM 是目前市面上的高性能虚拟机代表作之一,下图为 HotSpot VM 的内存结构
  • 它采用解释器与即时编译器并存的架构

1760285045116.png

Java 代码执行流程

执行流程就是我们上面简单提到过的

  1. Java 编译器编译 Java 源码,生成字节码文件
  2. 字节码文件载入 JVM
  3. JVM 将字节码编译为 机器码执行
    1760285721069.png

JVM 指令集架构

为满足跨平台性的设计,Java 的指令集都是根据栈来设计的。

不同平台的 CPU 架构不同,所以不能设计为基于寄存器的。这样做的优点是:跨平台,指令集小,编译器容易实现,也带来了缺点:性能下降,实现同样的功能需要更多的指令

JVM 生命周期

虚拟机的启动

Java 虚拟机的启动是通过引导类加载器(bootstrap class loader)创建一个初始类(initial class)来完成的,这个类是有虚拟机的具体实现指定的。

虚拟机的执行

  • 一个与运行中的 Java 虚拟机有着一个清晰的任务:执行 Java 程序。

  • 程序开始执行时他才运行,程序结束时他就停止。

  • 执行一个所谓的 Java 程序的时候,真真正正在执行的是一个叫做 Java 虚拟机的进程。

虚拟机的退出

有如下几种情况:

  • 程序正常执行结束
  • 程序在执行过程中遇到了异常或错误而异常终止
  • 操作系统出现错误导致 Java 虚拟机进程终止
  • 某线程调用Runtime类或System类的exit方法,或Runtime类的halt方法,并且Java安全管理器也允许这次exit或halt操作。
  • 除此之外,JNI(Java Native Interface)规范描述了用JNI Invocation API 来加载或卸载 Java 虚拟机时,Java 虚拟机的退出情况
http://www.gsyq.cn/news/20569.html

相关文章:

  • 从众多知识汲取一星半点也能受益匪浅【day11(2025.10.13)】
  • 光栅化
  • 编写DX12遇到的坑
  • 用Vmware ESXI6.7离线包封装网卡驱动
  • CF2159B
  • 环境变量 Path 配置实战指南:从“能用”到“专业”--两种配置环境变量的方法
  • 玄机蓝队靶场_应急响应_198:实战Live勒索病毒溯源排查
  • [KaibaMath]1009 关于||a|-|b||≤|a+b|的证明
  • 十月总结
  • SpringBoot-day2(基于SpringBoot实现SSMP整合) - a
  • # 20232429 2025-2026-1 《网络与系统攻防技术》实验一实验报告
  • Chroma私有化:本地部署完整方案
  • 嵌入式-C++面经2
  • 图像分类
  • https与http区别思维拓扑图 - krt
  • OpenHarmony中的环境服务管理配置讲解
  • 10.13每日总结
  • 完整教程:学习 React 前掌握 JavaScript 核心概念
  • 新学期每日总结(第7天)
  • 实验记录 2025/10/13
  • 正睿25csp七连测day5
  • 14 10.13
  • 深入解析:flutter AudioPlayer的使用问题及处理
  • 11 10.10
  • 新手村程序
  • Android Camera openCamera - 教程
  • 信号与系统
  • 大作业第一阶段验收小组集体加5分 -
  • [Vulhub靶机]W1R3S靶机渗透
  • 实用指南:Apache Doris 4.0 AI 能力揭秘(二):为企业级应用而生的 AI 函数设计与实践