1. JVM组成
1.1 JVM由哪些部分组成?运行流程?
难易程度:☆☆☆ 出现频率:☆☆☆☆
- Java Virtual Machine:Java 虚拟机,Java程序的运行环境(java二进制字节码的运行环境)
- 好处:一次编写,到处运行;自动内存管理,垃圾回收机制
程序运行之前,需要先通过编译器将 Java 源代码文件编译成 Java 字节码文件;
程序运行时,JVM 会对字节码文件进行逐行解释,翻译成机器码指令,并交给对应的操作系统去执行。
好处:一次编写,到处运行;自动内存管理,垃圾回收机制
JVM <---> 操作系统(windows、linux)<---> 计算机硬件(cpu、内存条)
java跨平台是因JVM屏蔽了操作系统的差异,真正运行代码的不是操作系统
JVM 主要由四个部分组成: 运行流程:
Java 编译器(javac)将 Java 代码转换为字节码(.class 文件)1. 类加载器(ClassLoader)
- 负责加载 .class 文件,将 Java 字节码加载到内存中,并交给 JVM 执行
2. 运行时数据区(Runtime Data Area)
管理JVM使用的内存。主要包括:
方法区(Method Area):存储类的元数据、常量、静态变量等。
堆(Heap):存储所有对象和数组,垃圾回收器主要回收堆中的对象。
栈(Stack):每个线程都有一个栈,用于存储局部变量、方法调用等信息。
程序计数器(PC Register):每个线程有一个程序计数器,指示当前线程正在执行的字节码指令地址。
本地方法栈(Native Method Stack):支持本地方法的调用(通过 JNI)。
其中方法区
和堆
是线程共享的,虚拟机栈
、本地方法栈
和程序计数器
是线程私有的。3. 执行引擎(Execution Engine)
- 负责执行字节码,包含:
解释器:逐条解释执行字节码。
JIT 编译器:将热点代码编译为机器码,提高执行效率。
垃圾回收器:回收堆中的不再使用的对象,释放内存。
4. 本地库接口(Native Method Library)
- 允许 Java 程序通过 java本地接口JNI(Java Native Interface)调用本地方法(如 C/C++ 编写的代码),与底层系统或硬件交互。