一、JVM 是什么?

JVM全称Java Virtual Machine(Java虚拟机),是一个虚构出来的计算机,它屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码,ByteCode), 就可以在多种平台上不加修改地运行。这背后其实就是JVM把字节码翻译成具体平台上的机器指令,从而实现“一次编写,到处运行(Write Once, Run Anywhere)”。

上图为 JVM 在 java 体系结构中的地位图,从上图可以看出:

  • JVM 只是 JRE 的一部分
  • JRE(java runtime environment, java 运行环境),包含了 Java 虚拟机、Java 基础类库,是使用 Java 语言编写的程序运行时所需要的软件环境,是提供给想要运行 Java 程序的用户使用,普通用户只是运行已经开发好的 Java 程序的话,安装 JRE 即可
  • JDK(java development kit,java 开发工具包),Java 程序设计语言、Java虚拟机、Java API 类库这三个部分统称为 JDK。

二、计算机体系结构与 JVM 体系结构简介

2.1 计算机体系结构

计算机体系结构的核心包含:

  • 指令集
  • 计算单元(CPU)
  • 寻址单元
  • 寄存器
  • 存储单元

2.2 JVM 体系结构

JVM 体系结构与计算机体系结构相似,核心部分包括:

  • JVM 指令集
  • 类加载器
  • 执行引擎 – JVM 的 CPU
  • 内存区 – JVM 的存储
  • 本地方法调用 – 调用 C / C++ 实现的本地方法

三、Hotspot 架构

虽然 Java 虚拟机有很多种,但是 Hotspot 虚拟机是目前最流行常用的虚拟机,所以有必要了解 Hotspot 虚拟机的一些基本架构。

Java 虚拟机的主要组件,包括类加载器运行时数据区执行引擎

如下图是 Hotspot 虚拟机的基本架构。Hotspot 虚拟机拥有一个架构,它支持强大特性和能力的基础平台,支持实现高性能和强大的可伸缩性的能力。举个例子,Hotspot 虚拟机 JIT 编译器生成动态的优化,换句话说,它们在 Java 应用执行期做出优化,为底层系统架构生成高性能的本地机器指令。另外,经过它的运行时环境和多线程垃圾回收成熟的进化和连续的设计, Hotspot 虚拟机在高可用计算系统上产出了高伸缩性。

以上为本人对 JVM 的一些记忆与理解,接下来本系列关于 JVM 博客将在 JVM 内存管理、 垃圾回收以及类加载三个部分进行记录总结。