【JVM】字节码文件结构

转自腾讯云社区-随风溜达的向日葵《JVM与字节码——2进制流字节码解析 原》
侵删

{
  magicNumber: 0xcafebabe,//魔数
  minorVersion: 0x00, //副版本号
  majorVersion: 0x02, //主版本号
  constantPool:{ //常量池集合
    length:1,//常量个数
    info:[{id:"#1“,type:"UTF8",params:"I"}]//常量具体信息
  },
  accessFlag:2,//类访问标志
  className:constantPool.info[1].id,//类名称,引用常量池数据
  superClassName:constantPool.info[2].id,//父类名称,引用常量池数据
  interfaces:{length:1,[id:constantPool.info[3].id],//接口集合
  fields:{ //字段集合
    length:1,//字段个数
    info:[{
      accessFlag:'PUBLIC', //访问标志
      name:constantPool.info[4].id //名称,引用常量池数据
      description:constantPool.info[5].id //描述,引用常量池数据
      attributes:{length:0,info:[]} //属性集合
    }]
  },
  methods:{ //方法集合
    length:2, //方法个数
    info:[{
      accessFlag:'PUBLIC', //访问标志
      name:constantPool.info[4].id //名称,引用常量池数据
      description:constantPool.info[5].id //描述,引用常量池数据
      attributes:{ //属性集合
        length:1, //属性集合长度
        info:[{
          name:constantPool.info[6].id,//属性名称索引,引用常量池数据
          byteLength:6,
          info:'', //属性内容,每一种属性结构都不同。
        }]} 
    }]
  },
  attributes:{length:0,info:[]} //类的属性
}
posted @ 2020-05-15 22:34  程序员徐小白  阅读(59)  评论(0)    收藏  举报