类加载
-
在Java代码中,类型(具体的class)的加载(典型的场景将已经编写好的class文件加载到内存里)、连接(将类与类的关系确认好,并且对于字节码的验证校验)与初始化(对于类型的静态变量进行赋值)过程都是在程序运行期间完成的
-
提供了更大的灵活性,增加了更多的可能性
-
Java 虚拟机与程序的生命周期 (Java虚拟机本身就是一个进程)
- 在如下几种情况下,Java 虚拟机将结束生命周期:
- 执行了System.exit()方法
- 程序正常执行结束
- 程序在执行过程中遇到了异常和错误而异常终止
- 由于操作系统出现错误而导致Java虚拟机进程终止
-
加载: 查找并加载类的二进制数据
-
连接
- 验证:确保被加载的类的正确性 (没有被恶意串改,复合字节码格式的要求)
- 准备:为类的静态变量分配内存,并将其初始化为默认值
- 解析:把类的符号引用转换成直接引用 (符号引用就是一种间接的方式:比如一个类里面的方法引用了另外一个类, 直接引用就是把这个方法通过指针的形式直接指向了所用到的目标对象它的内存的位置)
-
初始化:为类的静态变量赋予正确的初始值
类的使用与卸载
- 使用
- 卸载
网友评论