双亲委派模型

Java双亲委派模型 在这个模型中,类加载器(ClassLoader)之间存在一种层次关系,当一个类加载器收到加载类的请求时,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成。只有当父类加载器反馈自己无法完成这个加载请求(它的搜索范围中没有找到对应的类)时,子加载器才会尝试自己去加载。:它是最顶层的类加载器,主要负责加载 Java 的核心库(如 java.lang 包中的类),这个加载器是用本地代码(C/C++)实现的,它没有父加载器,是虚拟机自身的一部分。 阅读详情

双亲委派模型

概念:加载类的时候,⾸先会把该请求委派该⽗类加载器的 loadClass() 处理,因此所有的
请求最终都应该传送到顶层的启动类加载器 BootstrapClassLoader 中。当⽗类加载器⽆法处理
时,才由⾃⼰来处理。(从下往上,从上往下)
在这里插入图片描述
代码:

public class ClassLoaderDemo {
 public static void main(String[] args) {
 System.out.println("ClassLodarDemo's ClassLoader is " +ClassLoaderDemo.class.getClassLoader());
 System.out.println("The Parent of ClassLodarDemo's ClassLoaderis " + ClassLoaderDemo.class.getClassLoader().getParent());
 System.out.println("The GrandParent of ClassLodarDemo'sClassLoader is " +ClassLoaderDemo.class.getClassLoader().getParent().getParent());
 }
}

输出:

ClassLodarDemo's ClassLoader is
sun.misc.Launcher$AppClassLoader@18b4aac2
The Parent of ClassLodarDemo's ClassLoader is
sun.misc.Launcher$ExtClassLoader@1b6d3586
The GrandParent of ClassLodarDemo's ClassLoader is null

解释为什么调用不到最顶层,是因为使用C写的。
双亲委派模型优点:双亲委派模型保证了Java程序的稳定运⾏,可以避免类的重复加载(JVM 区分不同类的⽅式不仅仅根据类名,相同的类⽂件被不同的类加载器加载产⽣的是两个不同的类),也保证了 Java 的核⼼ API 不被篡改。如果不⽤没有使⽤双亲委派模型,⽽是每个类加载器加载⾃⼰的话就会出现⼀些问题,⽐如我们编写⼀个称为 java.lang.Object 类的话,那么程序运⾏的时候,系统就会出现多个不同的Object 类。
自己的理解(二话不说上代码):运行会报找不到main方法。因为首先是加载的根的String方法。

package lang;

public class String {
    public String toString(){
        return "hello";
    }
    public static void main(String[] args){
        String s = new String();
        s.toString();
    }
}

在这里插入图片描述
如果我们不想⽤双亲委派模型怎么办?
为了避免双亲委托机制,我们可以⾃⼰定义⼀个类加载器,然后重载 loadClass() 即可。
如何⾃定义类加载器?
除了 BootstrapClassLoader 其他类加载器均由 Java 实现且全部继承⾃
java.lang.ClassLoader 。如果我们要⾃定义⾃⼰的类加载器,很明显需要继承 ClassLoader 。
参考:JavaGuide等


ARM双核锁步DCLS Lockstep技术研究(FPGA实现) 基于《Applying Dual-Core Lockstep in Embedded Processors to Mitigate Radiation-induced Soft Errors》文章总结 RISC-V双核锁步DCLS Lockstep技术参考之前文章: RISC-V双核锁步DCLS Lockstep技术总结_远古架构师alanwu的博客-优快云博客https://blog.youkuaiyun.com/heyuming20062007/article/details/123329537ARM+RIS 阅读详情

相关推荐

AD24层次原理图设计避坑指南:如何解决端口连接与自动交叉引用问题

本文深入解析AD24层次原理图设计的核心机制,聚焦端口连接错误、自动交叉引用干扰等常见问题。通过对比自上而下与自下而上设计流程,提供端口类型匹配、命名规范等实用解决方案,并指导如何关闭烦人的红色框线视觉干扰,帮助工程师高效避坑,实现复杂系统的模块化设计。

wdx01234567的博客 615

如何打破双亲委派模型?打破双亲委派模型示例?什么是双亲委派模型?

双亲委派模型:如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把请求委托给父加载器去完成,依次向上,因此,所有的类加载请求最终都应该被传递到顶层的启动类加载器中,只有当父加载器在它的搜索范围中没有找到所需的类时,即无法完成该加载,子加载器才会尝试自己去加载该类。3.双亲委派就是类加载器之间的层级关系,加载类的过程是一个递归调用的过程,首先一层一层向上委托父类加载器加载,直到到达最顶层启动类加载器,启动类加载器无法加载时,再一层一层向下委托给子类加载器加载。为什么要打破双亲委派模型?

mischen520的博客 1331

VMware ESXi 7.0下Intel网卡SR-IOV配置实战:解决虚拟化网络延迟问题

本文详细介绍了在VMware ESXi 7.0环境下为Intel网卡配置SR-IOV(单根I/O虚拟化)的完整实战流程。通过硬件辅助直通技术,虚拟机可直接访问物理网卡资源,有效绕过虚拟化层瓶颈,从而显著降低网络延迟和CPU开销,适用于金融交易、实时计算等对性能敏感的场景。

embedding5hiker的博客 552

什么是双亲委派模型?双亲委派模型有何作用?

什么是双亲委派模型?双亲委派模型有何作用?

吴名氏的博客 13万+

Qlib上手学习记录

Qlib 是一个面向人工智能的量化投资平台,其目标是通过在量化投资中运用AI技术来发掘潜力、赋能研究并创造价值,从探索投资策略到实现产品化部署。该平台支持多种机器学习建模范式,包括有监督学习、市场动态建模以及强化学习等。真的是走了很多弯路step 1. 使用 ananconda 建立环境,要主要必须是 python 3.8失败的下了以后 进入 glib folder 后执行是会报错的,不管你还什么source 都一样,整了很久使用前最好看下这个。

chenchihwen的专栏 3099

Diffusion Model进阶解析:从SDE到概率流ODE的连续化生成建模

本文深入解析了Diffusion Model的连续化生成建模,从离散DDPM和SGM模型引入,阐述了采用随机微分方程(SDE)统一视角的必要性与优势。文章详细拆解了SDE的构成,揭示了其如何统一描述扩散过程,并重点介绍了逆向SDE与确定性的概率流ODE,后者为高效、确定的图像生成提供了理论基础。最后,文章对比了朗之万动力学、数值SDE求解器和数值ODE求解器(如DPM-Solver)等主流采样方法的实战应用与选择策略。

weixin_29099217的博客 437

双亲委派模型(Parent Delegation Model)

双亲委派模型(Parent Delegation Model)是 Java 类加载机制中的一个核心概念,它用于组织和管理 Java 类加载器的工作方式。Java 虚拟机(JVM)通过类加载器(ClassLoader)将.class文件加载到内存中,并且通过双亲委派模型来保证类的加载过程具有一定的安全性和统一性。类加载器应该先委托它的父类加载器尝试加载类,只有当父类加载器无法加载时,才由当前类加载器自己加载该类。

Flying_Fish_roe的博客 2046

Git Worktree + Claude Code:多终端并发开发完全实战

深入讲解如何使用 Git Worktree 配合多终端 Claude Code 实现并发开发,通过实战案例展示如何在 Android 开发中提升 2-3 倍效率,彻底告别等待 AI 的问题。

Cheson的专栏 1202

【JVM】双亲委派模型

之所以这个东西面试出场概率高高,最大的原因就是它起的名字很好听描述了查找.class文件的策略。

Yeeear的博客 1万+

《R 语言卡方检验全解析:手写代码实现与详细步骤》卡方检验

卡方检验(Chi-Square Test)是一种常用的统计方法,主要用于检验分类变量之间的独立性或拟合优度。在医学、社会科学等领域中,卡方检验常用于分析两个或多个分类变量之间的关系。以下是卡方检验的全面解析,包括实现代码和手写公式。χ2∑Ei​Oi​−Ei​2​Oi​Ei​dfr−1c−1rcdfk−1k如果卡方统计量大于临界值,或 p 值小于显著性水平(如 0.05),则拒绝原假设。

Mrrunsen的博客 685

rk3576 适配摄像头 (mipi 双摄)

RK3576 自带两个 4-Lane DPHY 和一个 DCPHY CSI 接口,可以连接 4lane 的双摄像头,最直接的方式就是充分利用其两个 D-PHY 接口。次选方案是 DCPHY + DPHY方案,更次之方案是单DPHY,设置成分离模式,连接两颗摄像头。

weixin_35723192的博客 388

一文搞懂双亲委派模型

类加载器 虚拟机设计团队把类加载阶段中的“通过一个类的全限定名来获取此类的二进制字节流”这个动作放到 Java 虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类。实现这个动作的代码模块称为“类加载器”。 从 Java 虚拟机的角度来讲,只存在以下两种不同的类加载器: 启动类加载器(Bootstrap ClassLoader),使用 C++ 实现,是虚拟机自身的一部分 所有其它类的加载...

To be a great coder 2万+

芯片ATE测试PAT(Part Average Testing)学习总结-20250916

文章摘要:零件平均测试(PAT)是半导体制造中基于统计学的质量控制方法,分为静态和动态两种类型。静态PAT通过预先设定的固定限值(每6-8批次更新)筛选异常芯片,计算采用稳健平均值和四分位间距。动态PAT则根据实时数据调整限值,能更精确识别异常而不误判合格芯片。两种方法均采用"均值±6倍标准差"的计算公式,但动态PAT具有更好的适应性和准确性。该方法通过统计分析提高了芯片产品的质量和可靠性。

歌颂苦难的行为是无耻的; 1190

双亲委派模型是什么,为什么要使用双亲委派模型

在Java中,类加载器(ClassLoader)是负责将类文件加载到JVM中的关键组件。为了确保类加载过程的安全性和稳定性,Java引入了一种叫做双亲委派模型(Parent Delegation Model)的机制。这篇文章将介绍什么是双亲委派模型,以及为什么要使用这种模型。

常备不懈 2133

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

双亲委派模型和破坏性双亲委派模型详解

从JVM的角度来看,只存在两种类加载器: 启动类加载器(Bootstrap ClassLoader):由C++语言实现(针对HotSpot),负责将存放在<JAVA_HOME>\lib目录或-X bootclasspath参数指定的路径中的类库加载到内存中。 其他类加载器:由Java语言实现,继承自抽象类ClassLoader。 如:扩展类加载器(Extension Clas...

Jack博客 7108

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

如何破坏双亲委派模型

起源来自于网易面试官的一个问题,一个类的静态块是否可能被执行两次。众所周知类加载的初始化阶段会自动收集类中所有类变量的赋值动作与静态语句块中的语句生成一个()方法,这个方法只会被执行一次。因此通常的理解类的静态语句块只会被执行一次。但感觉事情应该不会那么简单,在虚拟机中区分类是由类本身与加载类的类加载器决定的,猜想,同一个类被不同的类加载器加载,会执行两次静态块吗.? 失败的尝试 由于...

tinysakura的博客 1万+

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

【JVM】双亲委派模型、优势及如何破坏双亲委派模型

** 一、基本概念 一个类是由加载它的类加载器和这个类本身来共同确定其在Java虚拟机中的唯一性。 ** 二、什么是双亲委派模型 类加载器在接到加载类的请求时,首先将加载任务委托给父类加载器,依次递归,如果父类加载器可以完成类加载任务,就成功返回;只有父类加载器无法完成此加载任务时,才自己去加载。 双亲委派模型要求除了最顶层的启动类加载器外,其余的类加载器都应有自己的父类加载器,在双亲委派模型中...

Steven_L_的博客 2216

Java双亲委派模型是什么、优势在哪、双亲委派模型的破坏

Java双亲委派模型是什么、优势在哪、双亲委派模型的破坏 前言 双亲委派模型是Java加载类的机制.采用双亲委派模型的好处是Java类随着它的类加载器一起具备了一种带有优先级的层级关系,通过这种层级关系可以避免类的重复加载. Bootstrap ClassLoader(启动类加载器):负责将%JAVA_HOME%/lib目录中或-Xbootclasspath中参数指定的路径...

weixin_41563161的博客 1345

学习日志:双亲委派模型

类加载器有很多种,当我们想要加载一个类的时候,具体是哪个类加载器加载呢?这就需要提到双亲委派模型了。ClassLoader 类使用委托模型来搜索类和资源。双亲委派模型要求除了顶层的启动类加载器外,其余的类加载器都应有自己的父类加载器。ClassLoader 实例会在试图亲自查找类或资源之前,将搜索类或资源的任务委托给其父类加载器。

weixin_46117680的博客 1227

什么是双亲委派模型?

我们可以通过继承。

smart_an的专栏 1112

深入JVM 双亲委派模型

从虚拟机角度看,只存在2种不同的类加载器: 一种是启动类加载器(Bootstrap ClassLoader),这个类加载器使用C++语言实现,是虚拟机自身一部分; 一种是所有其他的类加载器,使用Java语言实现,独立于虚拟机,继承于java.lang.ClassLoader 从Java开发人员的角度来看,类加载器可进一步划分,一般情况下提供3种系统的类加载器 ——启动类加载器(Bootstr...

一只老风铃 3876

【JVM】教会你双亲委派模型

双亲委派模型以及类加载器,一篇文章即可秒懂~【JVM】含java代码

Jilit_jilit的博客 1467

【Java基础】JVM双亲委派模型

jvm的双亲委派模型为了解决什么问题,你真的搞懂了吗?还没懂的话,请看这篇

软件工程探索之旅 998
上一篇: JVM内存模型体系结构(更新)
下一篇: JVM对象(更新)
香草星冰乐
博客等级 码龄7年 21粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值