1、JVM 简介
Java 语言的一个非常重要的特点就是与平台的无关性,而使用 JVM 就是实现这一特点的关键。Java 语言使用 JVM 屏蔽了与具体平台相关的信息,使得 Java 语言编译程序只需生成在 JVM 上运行的目标代码(字节码)文件,JVM 在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是Java的能够“一次编译,到处运行”的原因。
JRE(Java Runtime Environment)仅包含运行 Java 程序的必需组件,包括 JVM 以及 Java 核心类库等。而 JDK(Java Development Kit)除了包含 JRE 外,还附带了一系列开发、诊断工具, 一般来说,如果只需要运行 Java 程序,安装 JRE 即可。但如果要进行 Java 程序的开发,那么就需要安装 JDK。
2、JVM 基本结构
JVM 总体上是由类装载子系统(ClassLoader)、运行时数据区、执行引擎、垃圾收集这四个部分组成。其中我们最为关注的运行时数据区,也就是JVM的内存部分则是由方法区(Method Area)、JAVA堆(Java Heap)、虚拟机栈(JVM Stack)、程序计数器、本地方法栈(Native Method Stack)这几部分组成。