JVM学习笔记四 :Class类文件结构
来源:互联网 发布:halcon机器视觉软件 编辑:程序博客网 时间:2024/04/28 05:06
魔数u4+
版本号u4(次版本号u2,主版本号u2)+
常量池(常量池容量计数器u2,(类型标志位u1+不同类型常量的结构))+
访问标志u2+
类索引u2+
父类索引u2+
接口索引集合u2+
字段表集合(容量计数器u2,标志位u2,简单名称u2,描述符u2,属性表容量计数器u2,(不同属性表结构))+
方法表集合(访问标志u2,名称索引u2,描述符索引u2,属性表容量计数器u2,(不同属性表结构))
1、魔数(u4)
用于确定该Class文件是否能够被虚拟机接收。值为CA FE BA BE。
2、版本号(u4)
分为次版本号和主版本号,表示该Class文件可以被大于或者等于该JDK的版本号的虚拟机执行。
3、常量池
3.1常量池容量计数值(u2)
表示常量池中有多少项常量。索引值从1开始。
3.2常量
有十一种类型的常量,每种常量的结构不用。
常量表类型标志值(u1)描述CONSTANT_Utf81UTF-8编码的Unicode字符串CONSTANT_Integer3int类型的字面值CONSTANT_Float4float类型的字面值CONSTANT_Long5long类型的字面值CONSTANT_Double6double类型的字面值CONSTANT_Class7对一个类或接口的符号引用CONSTANT_String8String类型字面值的引用CONSTANT_Fieldref9对一个字段的符号引用CONSTANT_Methodref10对一个类中方法的符号引用CONSTANT_InterfaceMethodref11对一个接口中方法的符号引用CONSTANT_NameAndType12对一个字段或方法的部分符号引用
CONSTABT_Class_info型常量的结构
类型名称数量u1tag1u2name_index1CONSTANT_Utf8_info型常量的结构
类型名称数量u1tag1u2length1
类型名称数量u1tag1u2length1
u1
bytes
length
4、访问标志(u2)
用于识别一些类或者结构层次的访问信息,包括:这个类是否还是接口;是否定义为public类型;是否定义为abstract类型等。值为A|B。
5、类索引(u2)
确定类的全限定名。
6、父类索引(u2)
确定这个类的父类的全限定名。除了java.lang.Object外,所有的java父类索引都不为0。
7、接口索引集合(u2)
描述这个类实现了哪些接口。
8、字段表集合
8.1标志位(u2)
描述变量的数据类型。
8.2名称索引
描述变量的简单名称。
8.3描述符索引
描述变量的数据类型、方法的参数列表和返回值
8.4属性容量表计数器
表示接下里有多少个变量。
9、方法表集合
和字段表集合类似。
10.属性表——在字段表集合和方法表集合的最后
类型名称数量说明u2attribute_name_index
1
1
属性表的类型
u2attribute_length1属性表的长度
u1
info
attribute
不同属性表的结构不一样
属性表类型
例子:
(1)JDK为jdk1.6.0_43
(2)程序
package com.pandawork.test;
public class TestClass {
private int m;
public int inc(){
return m+1;
}
}
(2)class文件如下:
(3)使用javap打印出的常量值
分析结果:
具体分析结果请点击这里(因为图片上传很麻烦)图片参考地址:http://www.cnblogs.com/xiaoruoen/archive/2011/11/30/2267309.html
0 0
- JVM学习笔记四 :Class类文件结构
- JVM学习笔记(四):Class文件结构
- jvm探秘四:class类文件结构
- JVM学习笔记(六)Java Class类文件结构
- JVM学习笔记8—Class文件结构
- JVM学习笔记(二)——Class文件结构
- JVM----Class类文件结构
- JVM笔记5:Class文件结构
- JVM学习笔记--类文件结构
- JVM学习笔记-类文件结构
- JVM学习(一)之Class类文件结构
- jvm学习记录--08 Class文件结构
- JVM class文件结构
- jvm class文件结构
- jvm学习笔记(1)class文件
- JVM学习笔记之class文件
- 【深入理解JVM】:Class类文件结构
- 深入理解JVM--class类文件结构
- 【可持久化线段树】【hdu 4348】To the moon
- Visual Studio Ultimate 2012 静态激活密钥
- Eclipse自动补全设置
- iOS开发学习之#标签栏控制器#(6)设置标签栏控制器
- js函数作用域和声明提前
- JVM学习笔记四 :Class类文件结构
- 熙汇银的投资十大雷区
- 字母游戏
- 阅读高手编写的类似QQ聊天的服务端代码业务层设计总结
- android几种异步处理情况笔记 Handler类:
- uva 10739(dp)
- 设置上传图片在显示页面的宽度
- 处理大图片(1)
- 工厂模式