Java程序运行

1.使用javac将后缀.java的源文件编译成.class字节码文件
2.JVM加载字节码(也称为类加载)
- 从表面上看,.class文件通过加载,生成某种形式的Class数据结构进入内存,也称为反射,程序可以调用这个数据结构,创建Object
- 从上图中可以看到类加载只包括加载,连接,初始化三个过程
- 解析部分是灵活的,他可以在初始化环节之后再进行,实现所谓的后期绑定,其他环节的顺序不可改变
2.1加载
加载时一个读取Class文件(这里的Class文件不仅仅指的是本地的二进制文件,泛指各种二进制流),将其转化为某种静态数据结构存储在方法区内,并在堆中生成一个便于用户调用的java.lang.Class类型的对象的过程
2.2连接
2.2.1验证
- 文件格式验证
- 元数据、字节码的验证,保证其不会产生危害虚拟机的行为
- 符号引用验证
2.2.2准备