分为三个步骤:

1、装载

装载过程负责找到二进制字节码并加载到JVM中 

2、链接 对二进制字节码的格式进行校验,初始化装载类中的静态变量及解析类中调用的接口,类。把相应的类型信息存储到方法区中。。。 

1)校验 

2)准备 为成员分配内在,并赋与默认值

3) 解析(可选) 这一步不容易 把符号引用解析成直接引用,常量入口,相应表

3、初始化

执行类中的静态初始化代码,构造器代码及静态性的初始化

触发条件

1)调用了new

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 

进行加载,以此类推。。。 

 

 

posted on 2010-07-30 18:10  ALVINZ  阅读(80)  评论(0)    收藏  举报