大体上,class的生命周期是这样子的:
classLoader是什么?通过一个类的全限定名,获取这个类的二进制字节码。
区分两种classLoader:
1、bootStrap,C++实现,是虚拟机的一部分;
2、其他,java实现,虚拟机外部,继承自java.lang.ClassLoader。
另外一种区分方式:
1、启动 Bootstrap Classloader
主要面对JAVA_HOME/LIB目录
2、扩展Extention Classloader
主要面对JAVA_HOME/lib/ext目录
3、application classloader。
面对ClassPath目录。
classLoader的层次关系:双亲委托模型。
使用这个模型的好处是判定父类是否被加载过,避免重复加载。
一个类被直接引用则初始化,否则就是被动引用,不会初始化
是否被卸载的判定:
怎样卸载?
在方法区中清空类信息
有道云笔记:http://note.youdao.com/share/?id=08b5ff2bbad87e4e784104126c5f06f6&type=note
原文:http://www.cnblogs.com/ELMND/p/4693062.html