什么是JVM

  • 定义:
    JVM(Java Virtual Machine,Java 虚拟机)是一个可以运行 Java 字节码程序的虚拟计算机,它是 Java 技术的核心组件之一。
    简单来说:
    JVM 是一种 运行 Java 程序的虚拟环境,它把 Java 编译后的 .class 字节码文件转换成机器可以理解的指令,并在不同的操作系统上执行,使得 Java 实现了“一次编写,到处运行”(Write Once, Run Anywhere)的理念。
  • 主要作用:
  1. 执行 Java 字节码:Java 源代码被编译为字节码(.class 文件),由 JVM 来加载和执行。
  2. 内存管理:包括堆内存、栈内存、方法区等,是 JVM 自动垃圾回收(GC)机制的基础。
  3. 跨平台支持:JVM 为 Java 提供平台无关性,字节码在任意支持 JVM 的系统上都能运行。
  4. 安全性与隔离性:JVM 能隔离不同的应用程序并进行权限控制,防止恶意代码破坏系统。
  5. 性能优化:如 JIT(即时编译器),能在运行时将热点代码编译为本地机器码,提高执行效率。
  • 比较JVM、JRE、JDK
名称全称简要定义
JVMJava Virtual MachineJava 虚拟机,用于执行字节码(.class 文件)
JREJava Runtime EnvironmentJava 运行环境,包含 JVM 和 Java 的核心类库
JDKJava Development KitJava 开发工具包,包含 JRE 以及编译器等开发工具

常见的JVM

JVM主要组成

  • 类加载器
  • 运行时数据区域
区域名称是否线程私有主要作用
程序计数器记录当前线程执行的字节码行号(指令地址)
虚拟机栈管理方法调用、局部变量、操作数栈、返回地址等
本地方法栈为本地方法(如 JNI)服务
堆(Heap)存放所有对象实例,垃圾收集的主要区域
方法区(Metaspace)存放类信息、常量池、静态变量、JIT 编译代码等
运行时常量池方法区中的一部分,用于存储编译期产生的常量和符号引用
  • 执行引擎