zoukankan      html  css  js  c++  java
  • JVM--类文件结构

    class文件是一组以8位字节为基础的二进制流。各个数据项目严格按照顺序精密的排列在class文件之中。中间没有添加任何分隔符。
     
    无符号数:基本的数据类型,以u1、u2、u4、u8 来分别代表一个字节,两个字节,4个字节,8的字节的无符号数。无符号数可以用来描述数字、索引引用、数量值、或者按照UTF-8编码构成字符串值。
    表:由多个无符号数或者其他表作为数据项构成的复合数据类型,所有表都习惯性的以‘_info’结尾。
    表用于描述由层次关系的符合数据类型结构的数据。整个class文件本质上就是一张i表。
     
    魔数:每个class文件的头4个字节称为魔数(magic number) 它的唯一作用是用于确定这个文件是否能被虚拟机接受的class文件。
     
    java的版本号从45开始JDK1.1之后每个JDK大版本发布本号向上加1,高版本的JDK能向下兼容。
    class文件结构中只有常量池的容量计数是从1开始的。0表示不引用。
     
    常量池之中主要存放两个类常量:字面量和符号引用。字面量如文本字符串、被声明为final 的常量值等。符号引用属于编译原理方面的概念,包括三类常量:
    类和接口的全限定名(Fully Qualified Name)
    字段的名称和描述符 (Descrioptor)
    方法的名称和描述符
     
    常量池中的每一项常量都是一个表,共有11中 结构各不相同的表结构数据,这11种表都有一个共同的特点。第一位是一个 u1 类型的标志位 tag,取值为1-12,缺少标志为2的数据类型。
     
  • 相关阅读:
    C#中的String与string
    类和结构的异同点?
    HTTP 无状态啊无状态啊
    重载运算符
    Lambda与委托
    Js与正则表达式
    字符函数PATINDEX()与STUFF()
    C#中的托管与非托管
    原码,反码,补码
    日期函数与转型
  • 原文地址:https://www.cnblogs.com/jsersudo/p/11377072.html
Copyright © 2011-2022 走看看