JVM类文件结构

2017-10-28  本文已影响0人  疯狂的哈丘

JVM的类文件通俗讲就是编译后的class文件。由于文件名是可以任意更改的,所以我们不能说以.class为后缀的文件就是JVM的类文件。

JVM类文件的结构(二进制字节码文件)必须严格遵守JVM定下的规范。因此,只要字节码文件符合这个规范,不论这个字节码文件叫什么名字,放在哪里(磁盘还是网络传输或者其他方式生成),JVM都可以识别执行。

所以并不是只有编译java源码才可以得到JVM类文件,只要你有编译器,可以将任何语言编译成符合JVM规范的类文件。

JVM类文件结构

各个数据的具体顺序如下图:


JVM类文件各数据顺序图.png

各个数据块具体的介绍书上和网上都讲的很详细了,这里就不介绍了。

类文件常量池

以前一直很不理解常量池的概念。今天看了JVM的类文件结构这一张,对常量池终于有了个清晰的了解。

每个JVM类文件都有一个自己的常量池,存放类的类名,变量名,字符串,方法名等。我们可以通过索引得到这些描述。

这里注意一点,常量池表的下标是从1开始的。其他表都是从0开始。常量池表把下标0空出来是为了让满足后面某些指向常量池的索引值的数据在特定的情况下需要表达"不引用任何一个常量池项目"的含义。

字节码指令集

类文件结构详解:
http://blog.csdn.net/ochangwen/article/details/51457398

上一篇 下一篇

猜你喜欢

热点阅读