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

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

1.类文件结构

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

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

第一列是八进制的标号。

1.1魔数

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

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

1.2 版本

小版本是前两个,主版本是后两个,16进制的34对应10进制的52,对应jdk8。

1.3 常量池

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

()V表示空参的void.

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

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

开头加上L是引用类型

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

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

1.4访问标识与继承信息

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

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

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

1.5 Field 信息

成员变量信息

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

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

1.6Method 信息

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

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

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

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

1.7 附加属性

蚌埠住了,直接跳了

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

了解即可

了解即可

了解即可

相关推荐
华仔啊7 小时前
JVM参数到底配在哪?7大场景全解,新手不再迷茫!
java·jvm
流星5211221 天前
GC 如何判断对象该回收?从可达性分析到回收时机的关键逻辑
java·jvm·笔记·学习·算法
JanelSirry1 天前
我的应用 Full GC 频繁,怎么优化?
jvm
JH30731 天前
jvm,tomcat,spring的bean容器,三者的关系
jvm·spring·tomcat
DKPT1 天前
JVM直接内存和堆内存比例如何设置?
java·jvm·笔记·学习·spring
siriuuus2 天前
JVM 垃圾收集器相关知识总结
java·jvm
小满、2 天前
什么是栈?深入理解 JVM 中的栈结构
java·jvm·1024程序员节
百花~2 天前
JVM(Java虚拟机)~
java·开发语言·jvm
每天进步一点点dlb2 天前
JVM中的垃圾回收算法和垃圾回收器
jvm·算法
漫漫不慢.2 天前
蓝桥杯-16955 岁月流转
java·jvm·蓝桥杯