双亲委派机制:
类加载器的双亲委派机制的作用主要是能够保障Java平台的安全性。
在这委托机制中,除了JVM自带的根类加载器以外,其余的加载器都有且只有一个父加载器。当Java程序请求加载器loader加载example类时,loader会首先委托父加载器去加载该类,如果父类加载器不能加载,则父类加载器再向自己的父类加载器委托,如果直到根类加载器都无法加载,则由loader自己加载。
如果在向上委托的过程中,父加载器能加载成功,则返回example类的对应的Class对象的引用返回给loader。
加载器的父子关系:
加载器之间的父子关系指的是加载器对象之间的包装关系,并不是如同类之间的继承关系。一对父子加载器可能是同一个加载器类的两个实例,也可能不是。在子加载器对象中包装了一个父加载器对象。
例如:loader1与loader2都是MyClassLoader类的实例,并且loader2包装loader1,loader1是loader2 的父加载器:
ClassLoader loader1 = new MyClassLoader(); ClassLoader loader2 = new MyClassLoader(loader1);
双亲委托机制的优点是能够提供软件系统的安全性。在此机制下,用户自定义的类加载器不可能加载应该由父加载器加载的可靠类,从而防止不可靠代码代替由父加载器加载的可靠类。
沙箱机制:
待更