1. JVM简介
* JVM是Java虚拟机,是Java应用程序运行的平台。
* JVM可以跨平台运行,因为Java源代码会被编译成平台无关的字节码。
* JVM由Java虚拟机规范(Java Virtual Machine Specification)定义。
2. JVM架构
* JVM由三部分组成:Java虚拟机实现、Java虚拟机规范和Java虚拟机工具接口。
* Java虚拟机实现是实际运行Java程序的代码。
* Java虚拟机规范定义了Java虚拟机的行为和功能。
* Java虚拟机工具接口提供了一组工具来管理和监控Java虚拟机。
3. JVM内存管理
* JVM内存管理包括堆、栈、方法区和本地方法栈。
* 堆是Java程序中所有对象实例的存储空间。
* 栈是每个线程的执行上下文,包括局部变量、操作数栈和方法调用信息。
* 方法区存储已被加载的类信息、常量、静态变量以及即时编译器编译后的代码等数据。
* 本地方法栈用于支持native方法的执行。
4. JVM执行引擎
* JVM执行引擎负责执行Java字节码。
* JVM规范定义了两种执行引擎:解释器(interpreter)和即时编译器(Just-In-Time compiler,JIT)。
* 解释器将字节码逐条解释成指令并执行。
* JIT编译器将字节码编译成本地代码,以提高执行速度。
5. class文件格式
* class文件是Java程序的字节码文件,以二进制形式存储。
* class文件包含三部分:魔数(magic)、版本号(version)和常量池(constant pool)。
* 魔数是class文件的标识符,用于判断文件是否为有效的class文件。
* 版本号表示class文件的版本,用于支持多版本的Java虚拟机。
* 常量池包含程序中使用的常量信息,如字符串、类名、方法名等。