类加载机制
JAVA虚拟机加载类是采用双亲委派加载机制加载。
双亲委派模型
模型如下图:
双亲委派模型中除了启动类加载器之外其余都需要有自己的父类加载器。
当一个类收到了类加载请求时: 自己不会首先加载,而是委派给父加载器进行加载,每个层次的加载器都是这样。
所以最终每个加载请求都会经过启动类加载器。只有当父类加载返回不能加载时子加载器才会进行加载。
双亲委派的好处 : 由于每个类加载都会经过最顶层的启动类加载器,比如 java.lang.Object
这样的类在各个类加载器下都是同一个类(只有当两个类是由同一个类加载器加载的才有意义,这两个类才相等。)
如果没有双亲委派模型,由各个类加载器自行加载的话。当用户自己编写了一个 java.lang.Object
类,那样系统中就会出现多个 Object
,这样 Java 程序中最基本的行为都无法保证,程序会变的非常混乱。