java的classloader类加载器

时间:2021-06-14 16:22:42

Bootstrap类加载器: 加载JRE/lib/rt.jar
Extension类加载器: 加载JRE/lib/ext或java.ext.dirs目录
Application类加载器:加载CLASSPATH环境变量,

类加载器工作原则:

双亲委派

假设你有一个应用需要的类叫作Test.class,首先加载这个类的请求由Application类加载器委托给它的父类加载器Extension类加载器,然后再委托给Bootstrap类加载器。Bootstrap类加载器会先看看rt.jar中有没有这个类,因为并没有这个类,所以这个请求由回到Extension类加载器,它会查看jre/lib/ext目录下有没有这个类,如果这个类被Extension类加载器找到了,那么它将被加载,而Application类加载器不会加载这个类;而如果这个类没有被Extension类加载器找到,那么再由Application类加载器从classpath中寻找

可见性:

根据可见性机制,子类加载器可以看到父类加载器加载的类,而反之则不行

单一性机制

父加载器加载过的类不能被子加载器加载第二次

转发自:
http://www.importnew.com/6581.html