类加载器ClassLoader-1
一, 类加载器深入剖析 1,Java虚拟机与程序的生命周期 在如下几种情况下,Java虚拟机将结束生命周期: –执行了System.exit()方法 –程序正常执行结束 –程序在执行过程中遇到了异常或错误而异常终止 –由于操作系统出现错误而导致Java虚拟机进程终止 2,类的加载,链接,初始化 概念: •加载:查找并加载类的二进制数据(java编译后的.class文件) •连接 –验证:确保被加载的类的正确性 –准备:为类的静态变量分配内存,并将其初始化为默认值 –解析:把类中的符号引用转换为直接引用 •初始化:为类的静态变量赋予正确的初始值(=号后面的值) 图示: 初始化的条件: •Java程序对类的使用方式可分为两种 –主动使用 –被动使用 •所有的Java虚拟机实现必须在每个类或接口被Java程序“首次主动使用”时才初始化他们 •主动使用(六种) –创建类的实例 –访问某个类或接口的静态变量,或者对该静态变量赋值 –调用类的静态方法 –反射(如Class.forName(“com.shengsiyuan.Test”)) –初始化一个类的子类 –Java虚拟机启动时被标明为启动类的类(Java Test),就是用java命令执行的那个带有main方法入口的类。 被动使用 除了以上六种情况,其他使用Java类的方式都被看作是对类的被动使用,都不会导致类的初始化。 类的加载: 1