文章目录
- 整体结构
- 详细结构
- 架构模型
- JVM生命周期
1、整体结构
- Java虚拟机就是二进制字节码的运行环境,负责装载字节码到其内部,解释/编译为对应平台上的机器指令执行。
- jvm是运行在操作系统之上的,与硬件没有直接交互。
2、详细结构
原图:https://img-blog.csdnimg.cn/20210518203736751.png
译图:
3、架构模型
- 基于栈的指令集架构:跨平台性(无需硬件支持)、指令集小、指令多、执行性能比寄存器差。无需寻址(零地址指令方式分配)。
- 基于寄存器的指令集架构:依赖硬件、指令集大,执行效率高、需要寻址(一、二、三地址指令)
java指令集是基于栈的
public class StackStruTest {
public static void main(String[] args) {
int i = 2;
int j = 3;
int var = i + j;
}
}
对生成的字节码文件进行反编译
javap -v StackStruTest.class
Code:
stack=2, locals=4, args_size=1
0: iconst_2
1: istore_1
2: iconst_3
3: istore_2
4: iload_1
5: iload_2
6: iadd
7: istore_3
8: return
LineNumberTable:
4、JVM生命周期
- 启动
通过引导类加载器(Bootstrap class loader)创建一个初始类(initial class)完成。
初始类由虚拟机的具体实现指定。 - 执行
执行一个java程序,就是执行一个叫做java虚拟机的进程。 - 退出
程序结束、异常/错误、操作系统错误导致的JVM进程终止、Runtime/System类的exit方法(调用native的halt0())