从头开始学JVM--------Java类加载
一、类加载
在加载阶段,虚拟机需要完成三件事。
(1)通过类全限定名,获取此类的二进制字节流。
(2)将此字节流加载进方法区。
(3)在Java堆中生成一个此类的java.lang.Class对象,作为方法区这些数据的访问入口。
二、强制类初始化
用new关键字
调用一个类的静态成员(不包括使用final修饰的常量,因为常量在编译阶段就已经被存放到了方法区中)
使用反射初始化一个对象。
三、双亲委派模型
双亲委派模型要求除了顶层的启动类加载器之外,其余的类加载器都应当有自己的父类加载器。
双亲委派模型的工作过程是:如果一个类收到了类加载的请求,首先不会自己去尝试加载这个类,而是把这个请求委派给父加载器去完成。每个层次的类加载器都是如此,因此所有的加载请求,最终会传递到顶层的启动类加载器。只有父加载器无法加载这个类的时候,加载器才会自己尝试去加载。