Java 虚拟机(Java Virtual Machine,JVM)是由 JDK 提供的一个软件程序。虚拟机的任务是执行 Java 程序
Java 语言之所有有这种跨平台的功能,要归功于 Java 虚拟机。Java 虚拟机封装了底层操作系统的差异,不管是那种平台都可以按照以下的方法来执:
1. 把 .class 文件中的二进制数据加载到内存中。
2. 对类的二进制数据进行验证。
3. 解析并执行指令。
Java 虚拟机提供了程序运行时环境,运行时环境中最重要的一个资源是运行时数据区。运行时数据区是操作系统为 Java 虚拟机进程分配的内存区域,Java 虚拟机管辖的这块区域。
它把这块区域又进一步分成多个子区,主要包括 堆区、方法区和 Java 栈区。
在堆区存放对象,在方法区中存放类的类型信息,类型信息包括静态变量和方法信息等,方法信息中包含类的所有方法的字节码。
当运行“Java AppMain”命令时,就启动了一个 Java 虚拟机进程,该进程首先从 classpath 中查找到 AppMain.class 文件。读取这个文件中的二进制数据,把 AppMain 类的类型信息放到运行时数据区的方法区中,这一过程称之为类加载。
Java 虚拟机记载了 AppMain 类后。还会对其进行验证及初始化。