ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

JVM-类加载和字节码技术

2022-05-10 22:03:51  阅读:213  来源: 互联网

标签:count ACC CONSTANT 字节 常量 u2 JVM 加载


类文件结构

根据JVM的规范,类文件的结构如下:

类型 名称 解释
u4 magic 魔数
u2 minor_version 小版本号
u2 major_version 主版本号
u2 constant_pool_count 常量池长度
cp_info constant_pool[constant_pool_count - 1] 常量池信息
u2 access_flags 访问修饰
u2 this_class 当前类信息
u2 super_class 父类信息
u2 interfaces_count 接口长度
u2 interfaces[interfaces_count] 接口信息
u2 fields_count 类中成员变量长度
field_info fields[fields_count] 成员变量信息
u2 methods_counts 方法长度
method_info methods[methods_count] 方法信息
u2 attributes_count 附加属性长度
attribute_info attributes[attributes_count] 附加属性信息

魔数

占4个字节。用来表示这是一个java文件,java的魔数是ca fe be be

小版本号和主版本号

各占2个字节,共4个字节。用来表示类的版本,例如 00 00 00 34 ,其中 00 34 就表示是java8


常量池

常量池长度

占2个字节,位置在8~9字节。用来表示常量池长度,例如 00 23 表示常量池有2*16+3-1 = 34项,其中#0项不计入其中,也没有值。

常量池信息对应

类型
01 CONSTANT_Utf8
03 CONSTANT_Integer
04 CONSTANT_Float
05 CONSTANT_Long
06 CONSTANT_Double
07 CONSTANT_Class
08 CONSTANT_String
09 CONSTANT_Fieldref
0a CONSTANT_Methodref
0b CONSTANT_InterfaceMethofref
0c CONSTANT_NameAndType
of CONSTANT_MethodHandle
10 CONSTANT_MethodType
12 CONSTANT_InvokeDynamic

Method

methods_counts

占用2个字节。表示方法的个数

method_info

方法信息。一般有构造方法init 和 主函数main。

其它

访问标识对应

类型
0x0001 ACC_PUBLIC
0x0010 ACC_FINAL
0x0020 ACC_SUPER
0x0200 ACC_INTERFACE
0x0400 ACC_ABSTRACT
0x1000 ACC_SYNTHETIC
0x2000 ACC_ANNOTATION
0x4000 ACC_ENUM

Field信息对应

Type FieldType
byte B
char C
double D
float F
int I
long J
reference L ClassName;(引用类型)
short S
boolean Z
reference [(一维数组)



==================== 参 考 文 献 ====================



标签:count,ACC,CONSTANT,字节,常量,u2,JVM,加载
来源: https://www.cnblogs.com/S2Jgogo/p/16255329.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有