【深入Java虚拟机】二 类加载与双亲委派

https://blog.csdn.net/zhangliangzi/article/details/51338291 -参考

双亲委派过程:当一个类加载器收到类加载任务时,立即将任务委派给它的父类加载器去执行,直至委派给最顶层的启动类加载器为止。如果父类加载器无法加载委派给它的类时,将类加载任务退回给它的下一级加载器去执行;除了启动类加载器以外,每个类加载器拥有一个父类加载器,用户的自定义类加载器的父类加载器是AppClassLoader;双亲委派模型可以保证全限名指定的类,只被加载一次;双亲委派模型不具有强制性约束,是Java设计者推荐的类加载器实现方式;

双亲委派模型的源码实现:

主要体现在ClassLoader的loadClass()方法中,思路很简单:先检查是否已经被加载过,若没有加载则调用父类加载器的loadClass()方法,若父类加载器为空则默认使用启动类加载器作为父类加载器。如果父类加载器加载失败,抛出ClassNotFoundException异常后,调用自己的findClass()方法进行加载。

双亲委派的好处:

使用双亲委派模型来组织类加载器之间的关系,有一个很明显的好处,就是Java类随着它的类加载器(说白了,就是它所在的目录)一起具备了一种带有优先级的层次关系,这对于保证Java程序的稳定运作很重要。例如,类java.lang.Object类存放在JDK\jre\lib下的rt.jar之中,因此无论是哪个类加载器要加载此类,最终都会委派给启动类加载器进行加载,这边保证了Object类在程序中的各种类加载器中都是同一个类。

破坏双亲委派的模型:

参考:

[3] 深入探讨 Java 类加载器:https://www.ibm.com/developerworks/cn/java/j-lo-classloader/index.html

Original: https://www.cnblogs.com/200911/p/9007497.html
Author: 积淀
Title: 【深入Java虚拟机】二 类加载与双亲委派

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/536823/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • MySQL学习之路(1):SQL脚本语言

    使用MySQL数据库,首先安装MySQL数据库,本文所有SQL脚本在MySQL上测试和执行。 安装Mysql服务器;安装Mysql workbench客户端,可以以图形化界面管理m…

    Java 2023年6月6日
    056
  • 我是如何将一个老系统的kafka消费者服务的性能提升近百倍的

    大家好,又见面了~ kafka作为一种高吞吐量的分布式发布订阅消息系统,在业务系统中被广泛的使用。 如果问你,如何提高kafka队列中的消息消费速度呢?答案很简单,topic多分几…

    Java 2023年6月7日
    088
  • Java-Security(七):Spring Security方法注解认证启用

    @EnableGlobalMethodSecurity标记启用方法认证注解类型包含以下3种: prePostEnabled:确定 前置注解 [@PreAuthorize,@Post…

    Java 2023年5月29日
    075
  • 经典面试题:==和equals的区别

    1.== 既可以比较基本类型也可以比较引用类型。对于基本类型就是比较值,对于引用类型就是比较内存地址 2.equals的话,它是属于java.lang.Object类里面的方法,如…

    Java 2023年6月14日
    0101
  • 谈谈我对Reactive Programming的理解

    Microsoft于2012年的时候在.NET生态中实现了反应式扩展库,简称ReactiveX或Rx。跟着RxJava又开发了JVM上的实现。之后Pivotal、Netflix、L…

    Java 2023年6月5日
    085
  • Spring事务的介绍,以及基于注解@Transactional的声明式事务

    前言 事务是一个非常重要的知识点,前面的文章已经有介绍了关于SpringAOP代理的实现过程;事务管理也是AOP的一个重要的功能。 事务的基本介绍 数据库事务特性: 原子性 一致性…

    Java 2023年6月7日
    087
  • java中方法的重载和重写

    一、方法的重载(Overload) 概念: 重载(overloading) 是在一个类里面,方法名字相同,而参数列表(个数、类型、参数排列顺序等)不同。返回类型可以相同也可以不同。…

    Java 2023年6月13日
    063
  • SpringBoot(二十):SpringBoot+Feign:实现Feign日志写入一行几种方案

    默认情况下Feign日志 这么多行,比如一些日志采集系统采集到后不好聚合或者索引查找。 日志写入一行#重写feign.Client.Default 自定义MyClient类 在覆盖…

    Java 2023年5月30日
    066
  • qq透明背景表情包制作(移动端)

    这里我们使用ps 1.把图放进去 2.把想透明的地方整成白的(自己想办法咋样都行) 3.ctrl + j 复制图层 3.操作复制后的图层(双击) 不看原图层就是(小眼睛) 4.往左…

    Java 2023年6月5日
    0124
  • Idea的Debug

    来自CSDN:https://blog.csdn.net/yxl_1207/article/details/80973622 Original: https://www.cnblo…

    Java 2023年6月8日
    062
  • 草图?不管黑猫白猫,能把你的设计理念讲清楚才行

    我在日常工作中,经常要参加一些技术活动,或被拉去参加一些需求会或运营会,时间比较分散。 上周在参加一个代码评审时,发现程序上该复用的没有复用,却写了两份逻辑几乎相同的代码。另外,还…

    Java 2023年6月15日
    090
  • RabitMQ 简介

    The secret of being miserable is to have leisure to bother about whether you are happy or …

    Java 2023年6月9日
    064
  • vue和java图片上传

    @ 前言 – 1、流程及图 2、前端: 1.表单提交 2.上传图片及相关方法 3、配置文件application.xml 3、后端 * 1.控制器 2.上传接口 3.七…

    Java 2023年6月13日
    077
  • .Net MVC实现角色-API权限验证的一种方式

    阅文时长 | 1.15分钟字数统计 | 1844.8字符主要内容 | 1、引言&背景 2、部分设计分享 3、声明与参考资料『.Net MVC实现角色-API权限验证的一种方…

    Java 2023年6月5日
    0111
  • 关于img 403 forbidden的一些思考

    网页中经常需要显示图片给用户看,对网站本身来说有的图片是从本地图片服务器来的,但是一旦数量多了以后,磁盘空间又是一个问题。 所以有时就希望显示其他网站的Image,直接把其他网站的…

    Java 2023年6月5日
    058
  • 线程安全策略

    保证线程安全的策略大体可以分为以下几个: 不可变对象:对象只能读,不能修改,从根源上消除多线程的不安全性。 线程封闭:线程之间不共享变量。 同步容器:使用同步关键字修饰关键方法,保…

    Java 2023年6月8日
    074
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球