zoukankan      html  css  js  c++  java
  • 什么是双亲委派机制和其作用

    1.什么是类加载

      通过javac将.java文件编译成.class字节码文件后,则需要将.class加载到JVM中运行,哪么是谁将.class加载到JVM的呢?那就是类加载器啦。

    2.类加载器类型

    • Bootstrap ClassLoader(启动类加载器):该类加载器由C++实现的。负责加载Java基础类,对应加载的文件是%JRE_HOME/lib/ 目录下的rt.jar、resources.jar、charsets.jar和class等。
    • Extension ClassLoader(标准扩展类加载器):继承URLClassLoader。对应加载的文件是%JRE_HOME/lib/ext 目录下的jar和class等。
    • App ClassLoader(系统类加载器):继承URLClassLoader。对应加载的应用程序classpath目录下的所有jar和class等。
    • CustomClassLoader(用户自定义类加载器):由Java实现。我们可以自定义类加载器,并可以加载指定路径下的class文件。

    3.什么是双亲委派机制

      双亲委派机制是当类加载器需要加载某一个.class字节码文件时,则首先会把这个任务委托给他的上级类加载器,递归这个操作,如果上级没有加载该.class文件,自己才会去加载这个.class

    4.为什么叫双亲委派机制

      双:代表是两两的意思。亲:代表两者之间有着千丝万缕的关系。委派:则是我们个人办不到的事情,委托别人去帮我们完成。总体来说,就是当子类加载器无法完成这件事时,则会委托父加载器去完成,当父加载器说这不是我做的事情时,则该任务又会落回到子类加载器,此时,子类加载器只能自己去完成该事情。通过上面的阐述,我们则可以明白为什么叫双亲委派机制了,两两之间相互委托对方。(以上纯属个人理解,如有错误之处,请指出

    5.双亲委派的作用

      ①防止加载同一个.class。通过委托去询问上级是否已经加载过该.class,如果加载过了,则不需要重新加载。保证了数据安全。

      ②保证核心.class不被篡改。通过委托的方式,保证核心.class不被篡改,即使被篡改也不会被加载,即使被加载也不会是同一个class对象,因为不同的加载器加载同一个.class也不是同一个Class对象。这样则保证了Class的执行安全。

  • 相关阅读:
    为什么越来越少的人用jQuery
    远程工作是一种怎样的体验?
    JavaScript黑客是这样窃取比特币的,Vue开发者不用担心!
    原有vue项目接入typescript
    ES6核心特性
    强烈推荐10个值得订阅的国外技术周报
    jquery ajax超时设置(转载)
    Multiple “order by” in LINQ(转载)
    Cookies, Claims and Authentication in ASP.NET Core(转载)
    Json.NET序列化后包含类型,保证序列化和反序列化的对象类型相同(转载)
  • 原文地址:https://www.cnblogs.com/enroute/p/13865807.html
Copyright © 2011-2022 走看看