zoukankan      html  css  js  c++  java
  • 我的面试经之JVM(二)双亲委派机制

    双亲委派机制:

      工作原理:

        1.如果一个类的加载器收到了类加载请求,他并不会自己先去加载,而是把这个请求委托给父类去执行;

        2.如果父类加载器还存在父类加载器,则进一步是向上委托,依次递归,请求最终到达顶层的启动类加载器

        3.如果父类加载器可以完成类加载任务,就成功返回,倘若父类加载器无法完成任务,子类加载器才会尝试自己去加载。这就是双亲委派模式

     举例:自定义的java.lang包下的String

    因为双亲委派机制,启动类加载器加载了java.lang.String类,而系统的String类中根本没有main方法,也就是说,这样自定义的系统名类根本不会执行自己定义的代码块,所以这个main是无效的定义

    同样:自定义java.lang下的类也会报错。

    比如加载SPI接口(串行外设接口,属于核心API,在rt.jar)

      通过双亲委派机制,到引导类加载器,加载rt.jar包,rt.jar加载SPI后有很多接口,涉及到实现类,要用到具体的第三方jar包,这个时候出现一个叫反向委派的东西;一直委派到系统类加载器,通过线程上下文类加载器获取到系统类加载器来加载SPI接口的实现类

        结论:

          接口是由引导类加载器加载

          具体的实现类是由系统类加载器加载

     双亲委派机制的优势:

          防止类的重复加载

            保护程序安全

              自定义类:java.lang.String

              自定义类:java.lang.Timeouting

                    都禁止加载

       

    沙箱安全机制:其实上边的例子已经体现出来了。

        

            

  • 相关阅读:
    使用sourcetree 出现 For user git on host github.com 解决方案
    iOS App Store下载的付费软件 重新签名后 安装到未越狱的手机上
    Swift 入门之简单语法(一)
    [转]C语言指针 之 结构体指针
    Xcode 菜单详解 [转载自用]
    C语言笔记-字符串+转义符(写起来想砸键盘)
    C语言笔记-getchar等蛋疼设定 [可能已解决]
    C语言笔记-枚举类型
    C语言笔记-数据类型长度
    C语言笔记-函数-存储期和作用域
  • 原文地址:https://www.cnblogs.com/Timeouting-Study/p/12469841.html
Copyright © 2011-2022 走看看