首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
class文件结构细节
神相
创建于2023-11-12
订阅专栏
讲解class文件相关知识,所有内容来自尚硅谷宋红康老师的课件
暂无订阅
共14篇文章
创建于2023-11-12
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
属性表集合
方法表集合之后的属性表集合,指的是class文件所携带的辅助信息,比如该 class 文件的源文件的名称。
方法表集合
methods:指向常量池索引集合,它完整描述了每个方法的签名。 在字节码文件中,每一个method_info项都对应着一个类或者接口中的方法信息。
字段表集合
fields 用于描述接口或类中声明的变量。字段(field)包括类级变量以及实例级变量,但是不包括方法内部、代码块内部声明的局部变量。
类索引、父类索引、接口索引集合
在访问标记后,会指定该类的类别、父类类别以及实现的接口,格式如下: 这三项数据来确定这个类的继承关系。 类索引用于确定这个类的全限定名 父类索引用于确定这个类的父类的全限定名。
访问标识
在常量池后,紧跟着访问标记。该标记使用两个字节表示,用于识别一些类或者接口层次的访问信息,包括:这个 Class 是类还是接口;是否定义为 public 类型;是否定义为 abstract 类型;如果
常量类型和结构
JDK1.7之后共有14种不同的表结构数据。如下表格所示: 根据上图每个类型的描述我们也可以知道每个类型是用来描述常量池中哪些内容(主要是字面量、符号引用)的。
符号引用和直接引用的区别与关联
Java代码在进行Javac编译的时候,并不像C和C++那样有“连接”这一步骤,而是在虚拟机加载Class文件的时候进行动态链接。也就是说,在Class文件中不会保存各个方法、字段的最终内存布局信息,
字面量和符合引用
2.1 字面量和符号引用 在对这些常量解读前,我们需要搞清楚几个概念。 常量池主要存放两大类常量:字面量(Literal)和符号引用(Symbolic References)。
常量池表
以 1 ~ constant_pool_count - 1为索引。表明了后面有多少个常量项。常量池主要存放两大类常量:字面量(Literal)和符号引用(Symbolic References)
为什么需要常量池计数器
constant_pool_count (常量池计数器) 由于常量池的数量不固定,时长时短,所以需要放置两个字节来表示常量池容量计数值。 常量池容量计数值(u2类型):从1开始,表示常量池中有多少项常
class文件的常量池
常量池:存放所有常量 常量池是Class文件中内容最为丰富的区域之一。常量池对于Class文件中的字段和方法解析也有着至关重要的作用。 常量池:可以理解为Class文件之中的资源仓库,它是Class文
如何确保高版本的JVM可执行低版本的class文件
不同版本的Java编译器编译的Class文件对应的版本是不一样的。目前,高版本的Java虚拟机可以执行由低版本编译器生成的Class文件,但是低版本的Java虚拟机不能执行由高版本编译器生成的Clas
class文件的魔数是什么
Magic Number(魔数):class文件的标志 每个 Class 文件开头的4个字节的无符号整数称为魔数(Magic Number) 它的唯一作用是确定这个文件是否为一个能被虚拟机接受的有效合
class文件结构
Class文件的结构并不是一成不变的,随着Java虚拟机的不断发展,总是不可避免地会对Class文件结构做出一些调整,但是其基本结构和框架是非常稳定的。