在Java代码中,类型的加载、连接(确立类与类之间的关系)与初始化过程都是在程序运行期间完成;这样提供了更大的灵活性,增加了更多的可能性。比如:Java的动态代理。
- 加载:查找并加载类的二进制数据;
- 连接:
- 验证:确保被加载的类的正确性;
-
准备:为类的静态变量分配内存,并将其初始化为默认值;
-
解析:把类中的符号引用转换为直接引用;
-
初始化:为类的静态变量赋予正确的初始化值;
-
使用;
-
卸载;
使Java虚拟机结束的情况:
- 执行System.exit()方法;
- 程序正常结束;
- 程序在执行的过程中遇到异常或错误而异常终止;
- 由于操作系统出现错误而导致的Java虚拟机进程终止;