JVM到底是什么?虚拟机的本质
引言 为什么要学习这个主题? 在上一篇文章中,我们了解了Java程序的运行流程,知道了JVM在其中扮演着"翻译官"的角色。但你是否想过: JVM到底是一个软件?还是一个标准? 为什么Oracle的JDK和OpenJDK的行为基本一致? HotSpot、OpenJ9、GraalVM这些名字都是什么?有什么区别? 理解JVM的本质,是掌握Java技术栈的关键。就像理解"什么是HTTP"比单纯会用浏览器更重要一样。 你将学到什么? ✅ 虚拟机的本质与分类 ✅ JVM规范与JVM实现的区别 ✅ 主流JVM实现的特点与选择 ✅ 如何查看和切换JVM 一、什么是虚拟机? 1.1 虚拟机的定义 虚拟机(Virtual Machine):通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。 简单来说:用软件模拟硬件。 1.2 虚拟机的分类 系统虚拟机(System VM) 代表:VMware、VirtualBox、Parallels Desktop 特点: 模拟完整的计算机系统 可以运行完整的操作系统 提供硬件虚拟化(CPU、内存、硬盘、网卡等) 使用场景: 物理机(Windows) ↓ VMware 虚拟机 ↓ 虚拟Linux系统(完整的操作系统) 进程虚拟机(Process VM) 代表:JVM、Python解释器、.NET CLR 特点: 只模拟程序运行环境 不需要完整的操作系统 为单个进程提供跨平台的执行环境 使用场景: 物理机(任何OS) ↓ JVM进程虚拟机 ↓ Java程序(字节码) 1.3 JVM属于哪一类? JVM是进程虚拟机(Process VM) 不模拟硬件 只提供字节码的执行环境 每个Java程序运行在一个JVM进程中 关键理解: 系统虚拟机 = 虚拟计算机(有CPU、内存、硬盘) 进程虚拟机 = 虚拟执行环境(只能运行特定程序) 二、JVM的本质:规范 vs 实现 2.1 JVM规范(JVM Specification) 定义:Oracle官方发布的一份技术文档,详细定义了JVM应该做什么、怎么做。 ...