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