JVM:类文件结构

  • 整个class文件以8位字节为单位的二进制流,本质上就是一张表,所有都以_info结尾
  • 文件结构
    1. 每个class文件都有四个字节的魔数0xCAFEBABE,第五第六字节是次版本,第七第八字节是主版本
    2. 常量池入口:类和接口、字段的名称和描述符、方法的名称和描述符
    3. 访问标志:类还是接口?等
    4. 类索引、父类索引、接口索引集合
    5. 字段表集合
    6. 方法表集合
    7. 属性表集合:class文件、字段表、方法表都可以携带自己的属性表集合

 

  • class文件不会保存各个方法、字段的最终布局信息。当虚拟机运行时,需要从常量池获得对应的符号引用,再在类创建或运行时解析、翻译到具体的内存地址
  • Code属性:接口或抽象类的方法就不具有Code属性,Code属性用于描述代码
  • this关键字:虚拟机调用实例方法时自动传入此参数
  • synchronized:由monitorenter和monitorexit两个关键字来支持,为了保证在方法异常完成时可以正确配对,编译器自动产生一个异常处理器,用来执行monitorexit

 

posted @ 2017-04-15 20:37  感遇  阅读(156)  评论(0)    收藏  举报