一、概述
由于整个JVM是以class文件为核心,所以分析class文件有利于我们更加深入理解JVM运行机制。
二、解析
1. class文件整体结构
class文件整体结构如下图所示(建议收藏):
主要内容包括:
(1) Magic Number:魔数,用于区分文件类型,解释如下图:
(2) Minor Version:jdk小版本号。
(3) Major Version:jdk大版本,也就是主版本。
(4) constant_pool_count:常量池数量。
(5) constant_pool:常量池具体内容,长度为constant_pool_count-1。
(6) access_flags:修饰符。
(7) this_class:当前类的类名。
(8) super_class:当前类的父类的类名。
(9) interfaces_count:实现的接口数量。
(10) interfaces:具体实现的接口。
(11) fields_count:属性数量。
(12) fields:属性详细信息。
(13) methods_count:方法数量。
(14) methods:具体方法详情。
(15) attributes_count:附加属性数量。
(16) attributes:附加属性具体详情。
2. IDEA安装插件jclasslib分析class文件
直接阅读class文件可能有些晦涩难懂,我们在IDEA上安装插件jclasslib后,就可以选中想要分析的class文件进行查看,如下图:
查看的内容就与上述结构图对应上了,具体如下:
3. 十六进制class文件结构对应分析
十六进制class文件结构对应分析具体如下:
三、总结
本文主要学习了class文件的结构,让我们更加深入理解了JVM运行class文件的机制。
更多精彩内容,敬请扫描下方二维码,关注我的微信公众号【Java觉浅】,获取第一时间更新哦!