一、类与类加载器
类加载器只用于类的加载动作。类加载器与这个类本身确定了这个类在JVM中的唯一性。比较两个类是否相等,必须要确保是在同一个类加载器下加载的才有可比性。否则即使两个类来源同一个class文件,被同一个虚拟机加载,但加载他们的类加载器不同,这两个类就不相等。
二、双亲委派机制
工作过程:
当一个类加载器收到的加载类的请求,它自己不会尝试加载这个类,而是把这个请求委托给父加载器去完成。
因此所有类的加载请求,都会先交给启动类加载器来进行加载,当启动类加载器无法加载时,则会交给扩展类加载器进行加载,当扩展类加载器无法加载时则会交给应用程序类加载器进行加载....以此类推。
双亲委派机制保证了一个类只会被一个类加载器所加载,保证了java类体系的稳定。
编辑
a、启动类加载器
该加载器负责加载lib包下的rt.jar、tools.jar。(rt、tools的名称不能变,负责无法加载)
编辑
b、扩展类加载器
该加载器主要负责加载ext目录下的类库
编辑
c、应用程序类加载器
该加载器也称作系统类加载器,负责加载用户类路径上的所有类库。当程序中没有自定义过类加载器,则默认由应用程序类加载器来加载程序。