JVM01_整体概述
Posted root_zhb
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JVM01_整体概述相关的知识,希望对你有一定的参考价值。
文章目录
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 //常量2
1: istore_1 //放到操作数栈索引位置1
2: iconst_3 //常量3
3: istore_2 //放到操作数栈索引位置2
4: iload_1 //加载 操作数栈索引位置1 也就是 i
5: iload_2 //加载 操作数栈索引位置2 也就是 j
6: iadd //常量2、3出栈,执行相加
7: istore_3 //将结果k 保存在 操作数栈索引位置3
8: return
LineNumberTable:
4、JVM生命周期
- 启动
通过引导类加载器(Bootstrap class loader)创建一个初始类(initial class)完成。
初始类由虚拟机的具体实现指定。 - 执行
执行一个java程序,就是执行一个叫做java虚拟机的进程。 - 退出
程序结束、异常/错误、操作系统错误导致的JVM进程终止、Runtime/System类的exit方法(调用native的halt0())
以上是关于JVM01_整体概述的主要内容,如果未能解决你的问题,请参考以下文章