jvm-004
1、在java代码中,类型的加载、连接、初始化都是在程序运行期间完成的。
2、优点:java是一门静态语言,在程序运行期间进行类的加载、连接和初始化可以为java语言提供更大的灵活性(如动态代理),增加了很多的灵活性,为java提供了动态语言的特性。
3、类型的加载、连接、初始化是按照顺序开始执行的,某一个阶段的执行并不是一定要等到它的上一个阶段结束之后才进行下一步,各个步骤之间是可以交叉执行的。
4、java虚拟机的生命周期:
结束虚拟机结束的4中情况:
A:执行System.exist();
B:程序正常执行结束;
C:程序在执行过程中遇到了异常情况,不断向上抛异常,直到启动类;
D:由于操作系统的错误导致的虚拟机的退出。
5、类的加载
查找并加载类的二进制数据到内存中,并生成一个java.lang.Object对象。
6、连接
验证:确保被加载类的正确性;
准备:为静态变量分配内存,并将其赋值为零值(0或null);
解析:把类中的符号引用转化为直接引用的过程。
7、初始化
按照代码的逻辑,将静态变量赋予正确初始值的过程。
8、类的使用
创建对象或调用方法、属性等;
9、类的卸载
类的生命周期的结束。