JVM-Class类文件的结构
来源:互联网 发布:sony软件下载 编辑:程序博客网 时间:2024/05/24 05:07
一、Class类文件概述
1、Class类文件是一组以8位字节为基础单位的二进制流,当遇到8位字节以上的数据项时,则会安照高位在前的方式进行分割成诺干个8位字节进行存储。
2、构成:无符号数、表
3、无符号数属于基本的数据类型,以u1、u2、u4、u8来分别代表一个字节、两个字节、四个字节、八个字节的无符号数。无符号数可以描述数字,索引引用,数量值,或者安装UTF-8编码构成的字符串值。
4、表是多个无符号数或其他表构成的复合数据类型,表都习惯以"_info"结尾。
5、描述同一类型但数量不定的多个数据时,经常会使用一个前置的容量计数器和诺干个连续的数据项的形式,这称为某一类型的集合。
二、class组成介绍
1、1-4:魔数。每个class文件的头4个字节称为魔数,唯一作用,用于确定这个文件是否是一个能被虚拟机接收的class文件。
2、5-8:class文件的版本号。5-6是次版本号,7-8是主版本号
3、9-?:常量池。
常量池=容量计数值+常量池项目
容量计数值:表示常量池中有多少个常量池项目(u2类型)
容量计数值从1开始计数,0空出来,表示不引用任何一个常量池的项目。
常量池项目= 标志位(tag)+常量池项目类型
标志位:表示该常量代表什么常量类型
常量池项目分为:字面量、符号引用。
常量池项目特点:1、每一个常量池项目都是一张表,2、开始的第一位是一个u1类型的标志位
符号引用分为:类和接口的全限定名、子段的名称和描述符、方法的名称和描述符
常量池之后的2个字节
?-2访问标识(access_flags):用于识别一些类或接口层次的访问信息。
1、一共有32个标志位可以使用。
类索引、父类索引与接口索引集合
1、Class文件由类索引、父类索引与接口索引集合来确定这个累的继承关系。
类索引(2个u2):确定这个类的全限定名。
父类索引(2个u2):确定这个父类的全限定名。
接口索引集合:用于描述这个类实现的那些借口。
子段表集合:描述接口或类中声明的变量,子段表包括类级变量或实例级变量,但是不包括方法内变量。
子段表集合 = 容量计数+ 子段表
子段表= 子段作用域+static+可变性+并发可见性+是否序列化+子段数据类型+子段名
com.adolph.test.TestClass
全限定名:com/adolph/test/TestClass;
简单名称:没有类型或参数修饰的方法或名称
描述符:描述子段的数据类型,方法的参数列表(数量、类型、顺序)和返回值
数组:每一维度将使用一个前置“[”字符描述
如:lang.String[][] -----> [[Ljava/lang/String;
方法:先参数列表,后返回值的顺序描述,参数列表安装参数顺序严格顺序放在一组小括号中。
如:void inc() ----->()V
如:int test(int a,double c) ------>(ID)I
方法表集合类似于子段表集合
- JVM-Class类文件的结构
- JVM的class文件结构
- JVM----Class类文件结构
- JVM class文件结构
- jvm class文件结构
- 深入理解JVM-Class类文件的结构
- 深入JVM的Class文件结构
- 深入JVM的Class文件结构
- 理解JVM的class文件结构
- JVM 第一章 class文件的结构详解
- 【深入理解JVM】:Class类文件结构
- 深入理解JVM--class类文件结构
- JVM--Class类文件结构(一)
- JVM--Class类文件结构(二)
- jvm探秘四:class类文件结构
- JVM 之 Class文件结构
- JVM-class文件结构解析
- JVM 的类文件结构
- Oracle随机查询n条数据
- redis防止重复提交
- C语言知识点梳理(1)
- storm运行机制自我复述
- Android 手机卡了怎么办
- JVM-Class类文件的结构
- 使用redis计数器防止并发请求
- js的基本语法
- ATL COM开发学习
- HTML鼠标在单元格上单击,单元格反色,可以利用方向键移动反色效果
- 自定义形状按钮的实现
- spring 整合 redis,以及spring的RedisTemplate如何使用
- 归并算法的简单运用
- 3.1 SCORE UVA1585