首页 10.Class文件结构

10.Class文件结构

举报
开通vip

10.Class文件结构深入JVM内核——原理、诊断与优化第10周深入JVM内核——原理、诊断与优化讲师葛一鸣主页http://www.uucode.netDATAGURU专业数据分析社区深入JVM内核——原理、诊断与优化讲师葛一鸣主页http://www.uucode.netDATAGURU专业数据分析社区法律声明【声明】本视频和幻灯片为炼数成金网络课程的教学资料,所有资料只能在课程内使用,不得在课程以外范围散播,违者将可能被追究法律和经济责任。课程详情访问炼数成金培训网站http://edu.dataguru.cn深入JVM内核——原...

10.Class文件结构
深入JVM内核——原理、诊断与优化第10周深入JVM内核——原理、诊断与优化讲师葛一鸣主页http://www.uucode.netDATAGURU专业数据分析社区深入JVM内核——原理、诊断与优化讲师葛一鸣主页http://www.uucode.netDATAGURU专业数据分析社区法律声明【声明】本视频和幻灯片为炼数成金网络课程的教学资料,所有资料只能在课程内使用,不得在课程以外范围散播,违者将可能被追究法律和经济责任。课程详情访问炼数成金培训网站http://edu.dataguru.cn深入JVM内核——原理、诊断与优化讲师葛一鸣主页http://www.uucode.netDATAGURU专业数据分析社区Class文件结构语言无关性文件结构魔数版本常量池访问符类、超类、接口字段方法属性深入JVM内核——原理、诊断与优化讲师葛一鸣主页http://www.uucode.netDATAGURU专业数据分析社区语言无关性JVM.class*.java*.rb*.groovy其他JVM语言深入JVM内核——原理、诊断与优化讲师葛一鸣主页http://www.uucode.netDATAGURU专业数据分析社区文件结构类型名称数量u4magic1u2minor_version1u2major_version1u2constant_pool_count1cp_infoconstant_poolconstant_pool_count-1u2access_flags1u2this_class1u2super_class1u2interfaces_count1u2interfacesinterfaces_countu2fields_count1field_infofieldsfields_countu2methods_count1method_infomethodsmethods_countu2attribute_count1attribute_infoattributesattributes_count深入JVM内核——原理、诊断与优化讲师葛一鸣主页http://www.uucode.netDATAGURU专业数据分析社区文件结构magicu40xCAFEBABEminor_versionu2major_versionu2JDK编译器版本target参数十六进制minor.major十进制major.minorjdk1.1.8不能带target参数0003002D45.3jdk1.2.2不带(默认为-target1.1)0003002D45.3jdk1.2.2-target1.20000002E46.0jdk1.3.1_19不带(默认为-target1.1)0003002D45.3jdk1.3.1_19-target1.30000002F47.0j2sdk1.4.2_10不带(默认为-target1.2)0000002E46.0j2sdk1.4.2_10-target1.40000003048.0jdk1.5.0_11不带(默认为-target1.5)0000003149.0jdk1.5.0_11-target1.4-source1.40000003048.0jdk1.6.0_01不带(默认为-target1.6)0000003250.0jdk1.6.0_01-target1.50000003149.0jdk1.6.0_01-target1.4-source1.40000003048.0jdk1.7.0不带(默认为-target1.6)0000003250.0jdk1.7.0-target1.70000003351.0jdk1.7.0-target1.4-source1.40000003048.0深入JVM内核——原理、诊断与优化讲师葛一鸣主页http://www.uucode.netDATAGURU专业数据分析社区文件结构-常量池constant_pool_countu2constant_poolcp_infoCONSTANT_Utf81UTF-8编码的Unicode字符串CONSTANT_Integer3int类型的字面值CONSTANT_Float4float类型的字面值CONSTANT_Long5long类型的字面值CONSTANT_Double6double类型的字面值CONSTANT_Class7对一个类或接口的符号引用CONSTANT_String8String类型字面值的引用CONSTANT_Fieldref9对一个字段的符号引用CONSTANT_Methodref10对一个类中方法的符号引用CONSTANT_InterfaceMethodref11对一个接口中方法的符号引用CONSTANT_NameAndType12对一个字段或方法的部分符号引用深入JVM内核——原理、诊断与优化讲师葛一鸣主页http://www.uucode.netDATAGURU专业数据分析社区文件结构-常量池CONSTANT_Utf8tag1lengthu2bytes[length]深入JVM内核——原理、诊断与优化讲师葛一鸣主页http://www.uucode.netDATAGURU专业数据分析社区文件结构-常量池CONSTANT_Integertag3byteu4publicstaticfinalintsid=99;深入JVM内核——原理、诊断与优化讲师葛一鸣主页http://www.uucode.netDATAGURU专业数据分析社区文件结构-常量池CONSTANT_Stringtag8string_indexu2(指向utf8的索引)publicstaticfinalStringsname="geym";深入JVM内核——原理、诊断与优化讲师葛一鸣主页http://www.uucode.netDATAGURU专业数据分析社区文件结构-常量池CONSTANT_NameAndTypetag12name_indexu2(名字,指向utf8)descriptor_indexu2(描述符类型,指向utf8)UTF-8UTF-8深入JVM内核——原理、诊断与优化讲师葛一鸣主页http://www.uucode.netDATAGURU专业数据分析社区文件结构-常量池CONSTANT_Classtag7name_indexu2(名字,指向utf8)深入JVM内核——原理、诊断与优化讲师葛一鸣主页http://www.uucode.netDATAGURU专业数据分析社区文件结构-常量池CONSTANT_Fieldref,CONSTANT_Methodref,CONSTANT_InterfaceMethodreftag9,10,11class_indexu2(指向CONSTANT_Class)name_and_type_indexu2(指向CONSTANT_NameAndType)NameAndTypeClassFieldrefUTF-8UTF-8UTF-8深入JVM内核——原理、诊断与优化讲师葛一鸣主页http://www.uucode.netDATAGURU专业数据分析社区文件结构-常量池MethodrefClassUTF-8NameAndTypeUTF-8UTF-8深入JVM内核——原理、诊断与优化讲师葛一鸣主页http://www.uucode.netDATAGURU专业数据分析社区文件结构accessflagu2:类的标示符FlagNameValueInterpretationACC_PUBLIC0x0001publicACC_FINAL0x0010final,不能被继承.ACC_SUPER0x0020是否允许使用invokespecial指令,JDK1.2后,该值为trueACC_INTERFACE0x0200是否是接口ACC_ABSTRACT0x0400抽象类ACC_SYNTHETIC0x1000该类不是由用户代码生成,运行时生成的,没有源码ACC_ANNOTATION0x2000是否为注解ACC_ENUM0x4000是否是枚举深入JVM内核——原理、诊断与优化讲师葛一鸣主页http://www.uucode.netDATAGURU专业数据分析社区文件结构this_classu2指向常量池的Classsuper_classu2指向常量池的Class深入JVM内核——原理、诊断与优化讲师葛一鸣主页http://www.uucode.netDATAGURU专业数据分析社区文件结构interface_countu2接口数量interfacesinterface_count个interfaceu2每个interface是指向CONSTANT_Class的索引深入JVM内核——原理、诊断与优化讲师葛一鸣主页http://www.uucode.netDATAGURU专业数据分析社区文件结构field_count字段数量fieldsfield_count个field_infofieldaccess_flagsu2name_indexu2descriptor_indexu2attributes_countu2attribute_infoattributes[attributes_count];深入JVM内核——原理、诊断与优化讲师葛一鸣主页http://www.uucode.netDATAGURU专业数据分析社区文件结构-fieldFlagNameValueInterpretationACC_PUBLIC0x0001publicACC_PRIVATE0x0002privateACC_PROTECTED0x0004protectedACC_STATIC0x0008static.ACC_FINAL0x0010finalACC_VOLATILE0x0040volatileACC_TRANSIENT0x0080transientACC_SYNTHETIC0x1000synthetic;没有源码,编译器生成ACC_ENUM0x4000枚举类型access_flags深入JVM内核——原理、诊断与优化讲师葛一鸣主页http://www.uucode.netDATAGURU专业数据分析社区文件结构-fieldname_indexu2常量池引用, 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示字段的名字descriptor_index表示字段的类型BbyteCcharDdoubleFfloatIintJlongSshortZbooleanVvoidL对象Ljava/lang/Object;[数组[[Ljava/lang/String;=String[][]深入JVM内核——原理、诊断与优化讲师葛一鸣主页http://www.uucode.netDATAGURU专业数据分析社区文件结构-fielddescriptor_index的字符串存放位置在哪里?深入JVM内核——原理、诊断与优化讲师葛一鸣主页http://www.uucode.netDATAGURU专业数据分析社区文件结构-methodmethods_count方法数量methodsmethods_count个method_info深入JVM内核——原理、诊断与优化讲师葛一鸣主页http://www.uucode.netDATAGURU专业数据分析社区文件结构-methodmethod_infoaccess_flagsu2name_indexu2descriptor_indexu2attributes_countu2attribute_infoattributes[attributes_count];深入JVM内核——原理、诊断与优化讲师葛一鸣主页http://www.uucode.netDATAGURU专业数据分析社区文件结构-methodFlagNameValueInterpretationACC_PUBLIC0x0001publicACC_PRIVATE0x0002privateACC_PROTECTED0x0004protectedACC_STATIC0x0008staticACC_FINAL0x0010finalACC_SYNCHRONIZED0x0020synchronizedACC_BRIDGE0x0040编译器产生桥接方法ACC_VARARGS0x0080可变参数ACC_NATIVE0x0100nativeACC_ABSTRACT0x0400abstractACC_STRICT0x0800strictfpACC_SYNTHETIC0x1000不在源码中,由编译器产生accessflag深入JVM内核——原理、诊断与优化讲师葛一鸣主页http://www.uucode.netDATAGURU专业数据分析社区文件结构-methodname_indexu2方法名字,常量池UTF-8索引descriptor_indexu2描述符,用于表达方法的参数和返回值深入JVM内核——原理、诊断与优化讲师葛一鸣主页http://www.uucode.netDATAGURU专业数据分析社区文件结构-method方法描述符voidinc()()VvoidsetId(int)(I)VintindexOf(char[],int)([CI)I深入JVM内核——原理、诊断与优化讲师葛一鸣主页http://www.uucode.netDATAGURU专业数据分析社区文件结构-attribute在field和method中,可以有若干个attribute,类文件也有attribute,用于描述一些额外的信息attribute_name_indexu2名字,指向常量池UTF-8attribute_lengthu4长度info[attribute_length]u1内容attribute本身也可以包含其他attribute随着JDK的发展不断有新的attribute加入类型名称数量u2methods_count1method_infomethodsmethods_countu2attribute_count1attribute_infoattributesattributes_count深入JVM内核——原理、诊断与优化讲师葛一鸣主页http://www.uucode.netDATAGURU专业数据分析社区文件结构-attribute名称使用者描述Deprecatedfieldmethod字段、方法、类被废弃ConstantValuefieldfinal常量Codemethod方法的字节码和其他数据Exceptionsmethod方法的异常LineNumberTableCode_Attribute方法行号和字节码映射LocalVaribleTableCode_Attribute方法局部变量表描述SourceFileClassfile源文件名Syntheticfieldmethod编译器产生的方法或字段深入JVM内核——原理、诊断与优化讲师葛一鸣主页http://www.uucode.netDATAGURU专业数据分析社区文件结构-attributeDeprecatedattribute_name_indexu2attribute_lengthu4attribute_name_index指向包含Deprecated的UTF-8常量attribute_length为0深入JVM内核——原理、诊断与优化讲师葛一鸣主页http://www.uucode.netDATAGURU专业数据分析社区文件结构-attributeConstantValueattribute_name_indexu2attribute_lengthu4constantvalue_indexu2attribute_name_index包含ConstantantValue字面量的UTF-8索引attribute_length为2constantvalue_index常量值,指向常量池,可以是UTF-8,Float,Double等publicstaticfinalintsid=99;深入JVM内核——原理、诊断与优化讲师葛一鸣主页http://www.uucode.netDATAGURU专业数据分析社区文件结构-attributeCodeCode_attribute{u2attribute_name_index;u4attribute_length;u2max_stack;u2max_locals;u4code_length;u1code[code_length];u2exception_table_length;{u2start_pc;u2end_pc;u2handler_pc;u2catch_type;}exception_table[exception_table_length];u2attributes_count;attribute_infoattributes[attributes_count];}Code字节码长度和字节码异常表长度异常处理的开始位置处理这个异常的字节码位置处理的异常类型,指向Constant_Class的指针处理这个异常的字节码位置属性数量深入JVM内核——原理、诊断与优化讲师葛一鸣主页http://www.uucode.netDATAGURU专业数据分析社区文件结构-attributeLineNumberTable-Code属性的属性LineNumberTable_attribute{u2attribute_name_index;u4attribute_length;u2line_number_table_length;{u2start_pc;u2line_number;}line_number_table[line_number_table_length];}UTF-8常量池,字面量LineNumberTable表项字节码偏移量和对应的行号深入JVM内核——原理、诊断与优化讲师葛一鸣主页http://www.uucode.netDATAGURU专业数据分析社区文件结构-attributeLocalVariableTable-Code属性的属性LocalVariableTable_attribute{u2attribute_name_index;u4attribute_length;u2local_variable_table_length;{u2start_pc;u2length;u2name_index;u2descriptor_index;u2index;}local_variable_table[local_variable_table_length];}UTF-8常量池,字面量LocalVariableTable局部变量作用域局部变量名称和类型局部变量的Slot位置深入JVM内核——原理、诊断与优化讲师葛一鸣主页http://www.uucode.netDATAGURU专业数据分析社区文件结构-attributeExceptions属性和Code属性平级表示方法抛出的异常(不是trycatch部分,而是throws部分)结构attribute_name_indexu2attribute_lengthu4number_of_exceptionsu2exception_index_table[number_of_exceptions]u2指向Constant_Class的索引深入JVM内核——原理、诊断与优化讲师葛一鸣主页http://www.uucode.netDATAGURU专业数据分析社区文件结构-attributepublicvoidsetAge(intage)throwsIOException{try{this.age=age;}catch(IllegalStateExceptione){this.age=0;}}深入JVM内核——原理、诊断与优化讲师葛一鸣主页http://www.uucode.netDATAGURU专业数据分析社区文件结构-attributeSourceFile描述生成Class文件的源码文件名称结构attribute_name_indexu2attribute_lengthu4固定为2soucefile_indexu2UTF-8常量索引深入JVM内核——原理、诊断与优化讲师葛一鸣主页http://www.uucode.netDATAGURU专业数据分析社区class文件结构例子publicclassUser{privateintid;privateStringname;privateintage;publicintgetId(){returnid;}publicvoidsetId(intid){this.id=id;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicintgetAge(){returnage;}publicvoidsetAge(intage){this.age=age;}}深入JVM内核——原理、诊断与优化讲师葛一鸣主页http://www.uucode.netDATAGURU专业数据分析社区class文件结构例子深入JVM内核——原理、诊断与优化讲师葛一鸣主页http://www.uucode.netDATAGURU专业数据分析社区class文件结构例子accessflagacc_publicacc_superthisclasssuperclassinterfacefieldcountaccessflagacc_privatenameindexinconstantpooliddescriptorindexinconstantpoolIattributecountmethodcountpublicnameindex<init>descriptorindex()VattributecountsetAgedescritorindex(I)Vattributecountattributecodelength62maxstackmaxlocals深入JVM内核——原理、诊断与优化讲师葛一鸣主页http://www.uucode.netDATAGURU专业数据分析社区class文件结构例子codelen=6异常表attributecountlinenumbertablelen=10,len=22linenumbertablelenthstartpc,linenumberLocalVaribleTable深入JVM内核——原理、诊断与优化讲师葛一鸣主页http://www.uucode.netDATAGURU专业数据分析社区localvaribletablelengthstartpclengthnameindexthisdescriptorindexUserslotindex另一个局部变量的信息方法到此结束attributecount0x23=sourcefilelengthUser.javaclass文件结构例子深入JVM内核——原理、诊断与优化讲师葛一鸣主页http://www.uucode.netDATAGURU专业数据分析社区Class文件结构万丈高楼平地起深入JVM内核——原理、诊断与优化讲师葛一鸣主页http://www.uucode.netDATAGURU专业数据分析社区43DATAGURU专业数据分析网站ThanksFAQ时间深入JVM内核——原理、诊断与优化讲师葛一鸣主页http://www.uucode.netDATAGURU专业数据分析社区
本文档为【10.Class文件结构】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
郝总CTO
暂无简介~
格式:ppt
大小:1MB
软件:PowerPoint
页数:43
分类:互联网
上传时间:2023-04-08
浏览量:0