首页 > 其他分享 >双亲委派模型

双亲委派模型

时间:2023-04-24 09:03:42浏览次数:39  
标签:委派 Java 模型 双亲 该类 父类 加载

在Java中,双亲委派模型是一种类加载机制。当一个类需要被加载时,首先会委托父类加载器去查找是否已经加载过该类。如果父类加载器能够找到并加载该类,则直接返回该类的Class对象;否则,就将该请求“下放”给子类加载器去处理。

这个过程会一直向下递归,直到顶层的启动类加载器。如果该类在所有的加载器中都没有找到,则会抛出ClassNotFoundException异常。

这种类加载机制的好处在于,可以有效地避免同名的类文件被重复加载,从而降低了系统资源的浪费。同时,由于父类加载器加载的类能够被子类加载器所共享,也保证了类的安全性和稳定性。

总之,Java中的双亲委派模型实现了Java字节码的动态加载和隔离,是保证Java应用程序安全、稳定运行的重要机制之一。

此双亲委派模型的顶层父类加载器是启动类加载器(Bootstrap ClassLoader),它是由JVM本身实现的,用于加载核心库(如rt.jar)等。接下来依次是扩展类加载器(Extension ClassLoader)和应用程序类加载器(Application ClassLoader或System ClassLoader),它们也是由JVM提供的默认实现。

扩展类加载器用于加载Java平台的扩展库(如jce.jar),而应用程序类加载器则用于加载应用程序的classpath路径下的类(如自定义的Java代码)。在这个过程中,如果需要加载一个类,就会先委托给上一级父类加载器,直到到达顶层的启动类加载器。

如果所有的父类加载器都无法找到该类,那么就会由当前类加载器来尝试加载该类。这样就保证了不同的类被加载器加载后具有独立的命名空间,从而避免了类之间的冲突和混乱。

总之,Java中的双亲委派模型是由JVM提供的一种类加载机制,它通过一定的规则来委派不同的类加载器去加载类文件,从而保证类的安全性和稳定性。

标签:委派,Java,模型,双亲,该类,父类,加载
From: https://www.cnblogs.com/hx-web/p/17209224.html

相关文章

  • 说说对盒子模型的了解和实际开发中需要注意的点
    盒子模型定义由内容content+内边距padding+边框border+外边距margin构成,盒子的宽高由content+padding+border决定,但是不同的盒子模型的计算依据不一样,分为:标准盒模型(w3c)和怪异盒模型(IE)标准盒模型宽高包含content+padding+border怪异盒模型......
  • Django4全栈进阶之路3 Model模型
    在Django中,模型(Model)是用于定义数据结构的组件,其作用如下:定义数据结构:模型用于定义数据库中的表格和表格中的字段(列),其中每个模型类对应一个表格,模型中的每个字段对应表格中的一列。模型的定义可以在 models.py 文件中完成。数据库操作:模型提供了简单易用的API用于操作......
  • thinkphp在模型中自动完成session赋值示例代码
    相信用过thinkphp的用户都知道thinkphp的模型可以完成很多辅助功能,比如自动验证、自动完成等,今天在开发中遇到自动完成中需要获取session值然后自动赋值的功能,具体看代码;classArticlelModelextendsModel{protected$_auto=array(array('addtime','time',1,'function'......
  • 长文本摘要模型的位置编码
    LongformerRoberta使用绝对位置编码,最大512.为了能够适应更长的文本,Longformer添加到4096。为了利用Roberta的预训练后的权重,多次复制512位置编码。做了实验,对比随机初始化位置编码和复制位置编码,显示出复制位置编码的重要性。扩展BART的1Ktokens到16Ktokens。初始化位置......
  • 175_模型_Power BI 显示详细信息(Show Ditails)
    175_模型_PowerBI显示详细信息(ShowDitails)一、背景在PowerBI数据分析的道路上有一个闭环:明细数据(详细信息)=>数据清洗=>根据业务建立模型=>出具数据分析报告(可视化)=>洞见问题=>根据问题指标返回业务人员问题指标的明细数据=>推动改善,监控洞见。很多时候在洞见问题后......
  • ChatGPT大模型+零代码,伙伴云给中小企业带来哪些机会?
    作者:伙伴云戴志康ChatGPT让2023年成了AI之年。正如iPhone在2007年开启了智能手机时代,我们现在正在进入人工智能时代。新形势下,零代码应如何借势发力?伙伴云“AI+零代码”给出了答案。作为零代码领域的头部平台,伙伴云全量发布【AI零代码应用搭建平台】,无需用户单独训练,无需额......
  • 模型动态测试工具TPT 19 新特性速览
    TPT19亮点    形式化需求:自动生成测试用例  在TPT19中,测试用例可以通过形式化需求自动创建—只需要按下按钮。 此前,形式化需求已经自动评估。现在我们对此进行了更深一步的改进。  参数集的混合执行  TPT19中可以更容易地创建参数集,可以多次执行,当......
  • RBAC权限模型、建表及SQL语句编写
    RBAC权限模型RBAC权限模型(Role-BasedAccessControl)即:基于角色的权限控制。这是目前最常被开发者使用也是相对易用、通用权限模型。建表及SQL语句编写准备工作创建数据库SQL表CREATEDATABASE/*!32312IFNOTEXISTS*/`sg_security`/*!40100DEFAULTCHARACTERSETutf8......
  • jvm如何打破双亲委托机制
    打破双亲委托机制重写父类ClassLoader的loadClass方法packagecom.morris.jvm.classloader;publicclassBreakDelegateClassLoaderextendsMyClassLoader{@OverrideprotectedClass<?>loadClass(Stringname,booleanresolve)throwsClassNotFoundException{......
  • JVM内存模型
    JVM内存模型JVM的内存模型也就是JVM中的内存布局,不要与java的内存模型(与多线程相关)混淆。下图是jdk8jvm内存模型图:程序计数器程序计数器是当前线程所执行的字节码的行号指示器。JVM支持多个线程同时运行,每个线程都会根据CPU时间片来回切换,那么如果当前线程获得时间片了,怎么知道它......