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的数据类型。
     
  • 相关阅读:
    [LeetCode][SQL]Rising Temperature
    google API的.NET库
    Google Reader的另一个开源的替代品Go Read
    C#中反射接受的字符串需要满足的Backus-Naur Form语法
    Windows的应用管理工具 PortableApps,Chocolatey和Ninite
    如何定制Windows系统右键菜单
    另一个有趣的Captcha 网站
    .gitignore模板
    遇到sql server的问题时如何排查
    如何传播你的代码
  • 原文地址:https://www.cnblogs.com/jsersudo/p/11377072.html
Copyright © 2011-2022 走看看