以一段简单的java代码为例:
package cn.itcast.jvm.t5;
// HelloWorld 示例
public class HelloWorld {
public static void main(String[] args) {
System.out.println("hello world");
}
}
执行 javac -parameters -d . HellowWorld.java
编译后的Class文件(二进制):
根据JVM规范,类文件结构如下:
ClassFile {
u4 magic;
u2 minor_version;
u2 major_version;
u2 constant_pool_count;
cp_info constant_pool[constant_pool_count-1];
u2 access_flags;
u2 this_class;
u2 super_class;
u2 interfaces_count;
u2 interfaces[interfaces_count];
u2 fields_count;
field_info fields[fields_count];
u2 methods_count;
method_info methods[methods_count];
u2 attributes_count;
attribute_info attributes[attributes_count];
}
1. 魔数
0~3 字节,表示它是否是【class】类型的文件
4~7 字节,表示类的版本
00 34(52) 表示是 Java 8
表示方法数量,本类为 2
一个方法由 访问修饰符,名称,参数描述,方法属性数量,方法属性组成
分析第一个方法:
分析第二个方法:
参考文献
字节码指令


