# 二、JVM 规范
# 1. 作用
Java 虚拟机规范为不用的硬件平台提供了一种编译 Java 技术代码的规范。
该规范使 Java 软件独立于平台,因为编译是针对作为虚拟机的“一般机器”而做。
# 2. 内容
- 字节码指令集(相当于 CPU)
- Class 文件的格式
- 数据类型和值
- 运行时数据区
- 栈帧
- 特殊方法
- 类库
- 异常
- 虚拟机的启动、加载、链接和初始化
# 3. 字节码指令集
见《Java 虚拟机规范(JavaSE 8 版)》 第 6 章。
# 4. Class 文件格式
见《Java 虚拟机规范(JavaSE 8 版)》 第 4 章。
# 4.1 说明
Class 文件是一组以 8 字节为单位的字节流,各个数据项目按顺序紧凑排列。
对于占用空间大于8 字节的数据项,按照高位在前的方式分割成多个 8 字节进行存储。
Class 文件格式里面只有两种类型:无符号数、表
(1)无符号数:基本数据类型,以 u1、u2、u4、u8 来代表几个字节的无符号数;
(2)表:由多个无符号数和其他表构成的复合数据类型,通常以**“_info”**结尾。
# 4.2 ClassFile 结构
每一个 .class 文件对应一个 ClassFile 结构:
# 5. 特殊方法
# <init>
实例初始化方法,通过 JVM 的 invokespecial 指令来调用。
# <clinit>
类或接口的初始化方法,不包含参数,返回 void。
← 一、JVM 概述 三、类加载、连接和初始化 →