1、语言无关性
虚拟机不关心字节码
Class
文件的来源是什么语言,只要符合Class
文件应有的结构就可以在Java虚拟机上运行
2、Class
类文件的结构
- 是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在
Class
文件中 - 文件格式采用一种伪结构存储,只有两种数据类型:无符号数和表
- 魔数:文件的头4个字节,用于确定这个文件是否为一个能被虚拟机接受的class文件
- 常量池主要存放两大类:字面量、符号引用
- Java语言不允许多重继承,所以父类索引只有一个,除了
java.lang.Object
之外,所有的Java类都有父类 - 字段表用于描述接口或类中声明的变量
- Java语言中字段是无法重载的,两个字段的数据类型、修饰符不管是否相同,都必须使用不一样的名称
- 方法表
volatile
和transient
这两个关键字不能修饰方法Slot
是虚拟机为局部变量分配内存所使用的最小单位
- 异常表
- 是Java代码的一部分,编译器使用异常表而不是简单的跳转命令来实现Java异常及finally处理机制