JVM——类加载与字节码技术—类文件结构

 JVM——类加载与字节码技术—类文件结构_第1张图片

由源文件被编译成字节码文件,然后经过类加载器进行类加载,了解类加载的各个阶段,了解有哪些类加载器,加载到虚拟机中执行字节码指令,执行时使用解释器进行解释执行,解释时对热点代码进行运行期的编译处理。 

1.类文件结构

  根据下面规范,魔数,两个版本,常量池信息,访问修饰,类名信息,父类信息,接口信息,类中成员变量,方法信息,类的附加属性信息。

JVM——类加载与字节码技术—类文件结构_第2张图片

JVM——类加载与字节码技术—类文件结构_第3张图片

加上-parameters参数会保留方法中参数的名称信息 

JVM——类加载与字节码技术—类文件结构_第4张图片

第一列是八进制的标号。

1.1魔数

JVM——类加载与字节码技术—类文件结构_第5张图片

不同的文件有不同的魔数信息。魔数用于标识文件是什么类型。

java选择"ca fe ba be"作为魔数。 

1.2 版本

JVM——类加载与字节码技术—类文件结构_第6张图片 小版本是前两个,主版本是后两个,16进制的34对应10进制的52,对应jdk8。

1.3 常量池

JVM——类加载与字节码技术—类文件结构_第7张图片

JVM——类加载与字节码技术—类文件结构_第8张图片

经过翻译解读知道第二项是System.out,第三项是要打印的字符串常量,第四项表示是out中的println方法,参数和返回值类型是(String)void。

()V表示空参的void.

第五项解读出来就是cn/itcast/jvm/t5/HelloWorld   本类信息

第六项是java/lang/Object     父类信息

开头加上L是引用类型

JVM——类加载与字节码技术—类文件结构_第9张图片

JVM——类加载与字节码技术—类文件结构_第10张图片 

 

JVM——类加载与字节码技术—类文件结构_第11张图片

 JVM——类加载与字节码技术—类文件结构_第12张图片

 这里讲的什么狗屎?总之一共34项记录了常量池里面各种信息。

这里可以去对照深入理解java虚拟机第三版中的、第222页的常量池中的17种数据类型的结构总表来看。

1.4访问标识与继承信息

接下来到访问修饰到接口这部分的描述

JVM——类加载与字节码技术—类文件结构_第13张图片

知道29 56都是常量池相关内容 

JVM——类加载与字节码技术—类文件结构_第14张图片

访问修饰部分通过查表知道00 21 是下面表中01+20,是一个public 类。

JVM——类加载与字节码技术—类文件结构_第15张图片 

1.5 Field 信息

成员变量信息

 java中为使字节码更加紧凑使用了更简洁的字符表示类型信息,如B表示byte。

L ClassName表示引用类型,【表示一维数组

JVM——类加载与字节码技术—类文件结构_第16张图片

 

1.6Method 信息

这里方法信息较为复杂的,需要了解反编译。

JVM——类加载与字节码技术—类文件结构_第17张图片

JVM——类加载与字节码技术—类文件结构_第18张图片

 了解即可......什么狗屎?

上面是init方法的解读........main方法不看了

看不懂是因为byd没有把那几个映射表拿出来,前面的常量有常量结构表,变量、方法、属性都有对应的映射表,告诉你各个类型用什么十六进制表示,然后这些类型由多少个十六进制组成

1.7 附加属性

JVM——类加载与字节码技术—类文件结构_第19张图片

蚌埠住了,直接跳了 

去搜一下jvm类文件结构,看看其他的视频先。

了解即可

了解即可

了解即可

你可能感兴趣的:(JVM,jvm)