类加载
1.类加载的时机:
如果类没有进行过初始化,则需要先触发其初始化。虚拟机规范严格规定只有5种情况必须立即对类进行“初始化”(加载、验证、准备必须在此之前开始):
(1)创建类的实例。访问某个类或接口的静态变量,或者对该静态变量赋值,调用类的静态方法。
(2)反射的方式
(3)初始化某个类的子类,则其父类也会被初始化
(4)Java虚拟机启动时被标明为启动类的类,直接使用java.exe命令来运行某个主类(包含main方法的那个类)
(5)当使用JDK1.7的动态语言支持时
2.类的生命周期:加载 - 验证 - 准备 - 解析 - 初始化 - 使用 - 卸载
3.类加载的全过程为:加载、验证、准备、解析、初始化这5个阶段
4.类加载器可以分为:启动类加载器、扩展类加载器、应用程序类加载器、自定义类加载器。
类加载机制--双亲委派机制
双亲委派机制的工作过程:如果一个类加载器收到了类加载的请求,他首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成,每一个层次的类加载器都是如此。因此所有的加载请求最终都应该传送到顶层的启动类记载器,只有当父加载器反馈自己无法完成这个加载请求(它的搜索范围中没有找到所需的类)时,子加载器才会尝试自己去加载。