Classloader的双亲委派机制与沙箱机制

双亲委派机制:

  类加载器的双亲委派机制的作用主要是能够保障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);

  双亲委托机制的优点是能够提供软件系统的安全性。在此机制下,用户自定义的类加载器不可能加载应该由父加载器加载的可靠类,从而防止不可靠代码代替由父加载器加载的可靠类。

 

沙箱机制:

  待更

posted @ 2019-09-26 09:37  漂白与湮灭  阅读(504)  评论(0编辑  收藏  举报