zoukankan      html  css  js  c++  java
  • Class文件结构(更新中)

    Class文件是一组以8位字节为单位的二进制流,当遇见需要占用8位字节以上空间的数据项时,则会按照高位在前的方式分割成若干个8位字节进行存储。

    格式,采用伪结构,只有两种数据结构:无符号数和表。

    无符号数:

    表:由多个无符号数或其他表作为数据项构成的复合数据类型,整个Class文件本质上就是一张表

    数据项:

    魔数(magic)

    Class文件的头4个字节,作用是确定此文件是否为虚拟机可接受的class文件

    次版本号(Minor Version)

    5、6字节

    主版本(Major Version)

    7、8字节

    常量池容量计数值(constant_pool_count)

    2个字节

    常量池(constant_pool)

    大小不固定

    字面量

    Java语言层面的常量:文本字符串、final

    符号引用

    编译原理层面的概念

    类和接口的全限定名(引入的类和接口,而不是此类或接口的

    字段的名称和描述符(描述符即修饰符)

    方法的名称和描述符

    java在进行javac编译时,没有“连接”操作,而是在虚拟机加载class文件时动态连接,也就是说class文件不会包含各个方法、字段的最终内存布局信息。

    访问标志(access_flag)

    2个字节

    类或者接口层次的访问信息,如这个class是类还是接口,是否是public

    类索引(this_class)

    u2

    确定此类全限定名(通过索引能查出全限定名)

    父索引(super_class)

    u2

    确定父类全限定名

    接口计数器(interfaces_count)

    u2

    代表接口索引表的容量

    接口索引集合(interfaces)

    u2类型数据集合

    此类实现了那些接口,按照implements后的接口顺序从左到右排列

    字段表集合(field_info)

    接口或类中的变量的描述,包括类级变量和实例级变量。

    内容:

    作用域(public、private、protected)、实例变量还是类变量、可变性、并发可见性、字段数据类型、字段名称

    对于修饰符,属于布尔值,用标志位表示

    对于字段名称,其实是通过索引引用常量池中的常量的简单名称

    方法表集合

    属性表集合

  • 相关阅读:
    CSS3媒体查询总结
    关于前端学习规划
    开发技术版本
    Visual Studio 问题汇总
    asp.net web core 开发问题汇总(1)
    asp.net web core 部署问题汇总
    报表平台需求文档(V0.0.0.1)
    Git使用说明
    派生类
    cin、cout的重载
  • 原文地址:https://www.cnblogs.com/yanze/p/9811478.html
Copyright © 2011-2022 走看看