类加载器与字节码技术
类文件结构
一个简单的HelloWorld.java
public class Demo_05 {
public static void main(String[] args) {
System.out.println("Hello world!");
}
}
执行javac -paremeters -d HelloWorld.java
编译为HelloWorld.class后是这样的:
这是二进制的字节码文件
根据JVM规范,类文件结构如下:
魔数
0~3字节,表示它是否是【class】类型的文件,即上面的jvm规范中的magic
java选择了:ca fe ba be 作为自己的魔数
版本
4-7个字节,表示类的版本00 34(52)表示是java8,对应第一张字节码图
常量池
占中整个类文件中的相当大的部分
8-9字节,表示常量池长度,00 23表示常量池有#1~#34项,注意#0项不计入,也没有值