分为三个步骤:
装载过程负责找到二进制字节码并加载到JVM中
2、链接 对二进制字节码的格式进行校验,初始化装载类中的静态变量及解析类中调用的接口,类。把相应的类型信息存储到方法区中。。。
1)校验
2)准备 为成员分配内在,并赋与默认值
3) 解析(可选) 这一步不容易 把符号引用解析成直接引用,常量入口,相应表
3、初始化
执行类中的静态初始化代码,构造器代码及静态性的初始化
触发条件
2)反射调用了类中的方法
3)子类调用了初始化
4)JVM启动过程中指定的初化类
四类ClassLoader
1)BootStrap ClassLoader 范围:$JAVA_HOME/jre/lib/rt.jar
2)Extension ClassLoader 范围:$JAVA_HOME/jre/lib/*.jar
3)System ClassLoader 范围:加载启动参数中指定的Classpath中的jar包及目录
4)User-Defined ClassLoader范围:加载非Classpath
加载类时通常按照树形结构的原则来进行,也就是说,首先应从parent ClassLoader尝试进行加载,当parent中无法加载时,就再尝试从System ClassLoader
进行加载,以此类推。。。
浙公网安备 33010602011771号