类加载器,双亲委派机制

11 阅读1分钟

一、类与类加载器

        类加载器只用于类的加载动作。类加载器与这个类本身确定了这个类在JVM中的唯一性。比较两个类是否相等,必须要确保是在同一个类加载器下加载的才有可比性。否则即使两个类来源同一个class文件,被同一个虚拟机加载,但加载他们的类加载器不同,这两个类就不相等。

二、双亲委派机制

        工作过程:

        当一个类加载器收到的加载类的请求,它自己不会尝试加载这个类,而是把这个请求委托给父加载器去完成。

        因此所有类的加载请求,都会先交给启动类加载器来进行加载,当启动类加载器无法加载时,则会交给扩展类加载器进行加载,当扩展类加载器无法加载时则会交给应用程序类加载器进行加载....以此类推。

        双亲委派机制保证了一个类只会被一个类加载器所加载,保证了java类体系的稳定。

        ​编辑

a、启动类加载器

        该加载器负责加载lib包下的rt.jar、tools.jar。(rt、tools的名称不能变,负责无法加载)        

​编辑

 b、扩展类加载器

        该加载器主要负责加载ext目录下的类库

        ​编辑

 c、应用程序类加载器

        该加载器也称作系统类加载器,负责加载用户类路径上的所有类库。当程序中没有自定义过类加载器,则默认由应用程序类加载器来加载程序。