4.Class类的文件结构

2019-01-30  本文已影响0人  Pagliacci_Joker

文件结构

以8字节为一个单元
.Class测试类

public class TestClass {
    private int m;
    public int inc(){
        return m+1;
    }
}
.class文件结构

1.魔数

2.class版本

3.常量池
存放字面量与符号引用。
字面量(更接近JAVA层面):例如字符串常量、声明final的常量值
符号引用:类和接口的全限定名、字段的名称和描述符、方法的名称和描述符。
当虚拟机运行时,需要从常量池中获得对应符号的引用,在类创建时运行时解析,翻译到具体的内存地址中。
即Class文件中不保存各个方法、字段最终的内存布局。
在常量池中,前两个字节代表常量池容量CP_NUM,一共有CP_NUM个CP_INFO
**CP_INFO
u1代表1字节,u2代表2字节

Constant结构
常量池总览

4.访问标志

image.png

5.索引
类索引
u2(2个字节)用来确定这个类的全限定名,指向某块CP_INFO
父类索引
u2(2个字节)用来确定这个类的父类的全限定名指向某块CP_INFO
接口索引集合
描述了这个类实现了哪些接口。前2个字节代表集合大小n,后面接n*u2块,代表接口索引实现了n个接口

6.字段表集合
filed_info为字段表集合,包含了类级变量及实例集变量,
头2个字节为集合大小。集合内单位为filed
private int m;
字段访问标识:private
描述符含义:int
简单名称:m

filed结构
字段访问标识
描述符含义

7.方法表集合
类似字段表集合的结构。

8.属性表集合
顺序没有硬性要求
jvm虚拟机字节指令表
哪天心情好再啃8。。枯了。

上一篇下一篇

猜你喜欢

热点阅读