对JVM的一个基础了解
1、JVM范围
2、JVM和class文件
(1)、JVM和Java语言无关,JVM是一种规范,任何语言只要能编译成class文件格式都能在JVM上运行
3、class文件格式
(1)、class文件就是一个二进制流,用十六进制表示为:
图中一个矩形代表一个字节
(2)class文件中的内容
1、魔术:每个Class文件的头4个字节成为魔数(Magic Number),它的唯一作用是确定这个文件是否为一个能被虚拟机接收的Class文件。所有Class文件,魔数均为0xCAFEBABE。
2、大小版本号:Class文件中第五、六个字节存储的是次版本号(minor version),第七、八个字节存储的是主版本号(major version)。假设Class文件的版本号十进制下为45.3,那么major version在十进制下为45,minor versio在十进制下则为3。
3、常量池计数器:用来记录常量池中常量的个数,因为用的是u2类型的数据即用两个字节来存储,所以常量池中的常量不能超过65535个。而且,常量池计数器是从1开始的,这样当某些数据想表达“不想引用任何一个常量池项”时,就可以将其常量池索引值设为0;
4、访问标志:用于识别一些类或接口层次的访问信息。例如:ACC_PUBLIC、标志位0x0001 表示是否为public类型。