JVM(2)—字节码文件

JVM(2)—字节码文件

什么是字节码文件

.java源码经过javac编译生成的二进制文件,称为字节码文件。

JVM通过字节码保证平台无关特性。

Java并不是唯一生成class文件的语言。

Class是结构紧凑的二进制流,格式固定,要求严谨。

字节码的组成结构

1.魔数。 2.文件版本。 3.常量池。 4.访问标志。 5.类/父类索引与接口索引集合。 6.字段表合集。 7.方法表合集。 8.属性表。

魔数

区分文件类型的依据。CAFEBABE是Java字节码文件的魔数,保存在前4个字节。

文件版本

5-6字节是次要版本号。7-8字节是主要版本号。JVM版本若低于字节码的版本,将报错UnsupportedClassVersionError。

常量池

  1. 字面量:字符串和final修饰的数值

  1. 符号引用

  1. 常量池类型数据表

访问标志

类/父类索引与接口索引集合

字段表

字段的名称与访问标志。

方法表

方法的名称与访问标志。

属性表

字节码指令

保存在Method描述中,一般不超过256个。

posted @ 2020-08-25 20:13  Baby丿太依赖  阅读(259)  评论(0编辑  收藏  举报