美文网首页
4.Class类的文件结构

4.Class类的文件结构

作者: Pagliacci_Joker | 来源:发表于2019-01-30 11:41 被阅读0次

    文件结构

    以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。。枯了。

    相关文章

      网友评论

          本文标题:4.Class类的文件结构

          本文链接:https://www.haomeiwen.com/subject/dpuqsqtx.html