【辰兮要努力】:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行!

博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端、后台、数据库、项目案例等相关知识点总结,感谢你的阅读和关注,希望我的博客能帮助到更多的人,分享获取新知,大家一起进步!

吾等采石之人,应怀大教堂之心,愿你们奔赴在各自的热爱中…

文章目录

  • 一、Java类加载器
  • 二、双亲委派模型

一、Java类加载器

首先引入一个概念什么是Java类加载器

一句话总结:类加载器(class loader)用来加载 Java 类到 Java 虚拟机中。

官方总结:Java类加载器(英语:Java Classloader)是Java运行时环境(Java Runtime Environment)的一部分,负责动态加载Java类到Java虚拟机的内存空间中。类通常是按需加载,即第一次使用该类时才加载。由于有了类加载器,Java运行时系统不需要知道文件与文件系统。

每个Java类必须由某个类加载器装入到内存。


JVM中有3个默认的类加载器:

1、启动类加载器 (Bootstrap Class Loader)

2、扩展类加载器(Extension Class Loader)

3、应用程序类加载器(Application Class Loader)

为什么要有三个类加载器,一方面是分工,各自负责各自的区块,就如Application Class Loader主要负责加载用户之间开发的代码,另一方面为了实现委托模型。


一个应用程序总是由n多个类组成,Java程序启动时,并不是一次把所有的类全部加载后再运行,它总是先把保证程序运行的基础类一次性加载到jvm中,其它类等到jvm用到的时候再加载。


二、双亲委派模型

第一次听到双亲委派模型这个概念确实有些模糊和不容易理解,我们可以通过图片和实用场景进一步加深对这个概念的学习和了解。

The Java platform uses a delegation model for loading classes. The basic idea is that every class loader
has a “parent” class loader.
When loading a class, a class loader first “delegates” the search for the class to its parent class loader before
attempting to find the class itself.

双亲委派模型,要求除了顶层的启动类加载器外,其余的类加载器都应当有自己的父类加载器。

Java平台通过委派模型去加载类。每个类加载器都有一个父加载器。

1、当需要加载类时,会优先委派当前所在的类的加载器的父加载器去加载这个类。

2、如果父加载器无法加载到这个类时,再尝试在当前所在的类的加载器中加载这个类。


1、因为双亲委派是向上委托加载的,所以它可以确保类只被加载一次,避免重复加载

共享功能:一些framework层级的类一旦被顶层加载器加载,缓存在内存。在其他任何地方用到时,都遵守双亲加载机制,派发到顶层加载器
因已经加载,所以都不需要重新加载。

2、避免核心类被串改:Java的核心API都是通过引导类加载器进行加载的,如果别人通过定义同样路径的类比如java.lang.Integer,类加载器通过向上委托,两个Integer,那么最终被加载的应该是jdk的Integer类,而并非我们自定义的,这样就避免了我们恶意篡改核心包的风险

隔离功能:保证核心类库的纯净和安全,防止恶意加载。`

最近比较忙,输出相对缓慢,或许有更重要的事情,下期见……


非常感谢你阅读到这里,如果这篇文章对你有帮助,希望能留下你的点赞

深入理解什么是双亲委派模型(Java图文详解)相关推荐

  1. 双亲委派模型以及SpringFactoriesLoader详解(最全最简单的介绍)

    文章目录 前言 类加载的过程 类加载器 何为双亲委派模型 ClassLoader类的loadClass方法 双亲委派模型存在的问题 解决办法 以JDBC驱动管理为例 加载资源 SpringFactor ...

  2. laravel mysql 视图_Laravel框架控制器,视图及模型操作图文详解

    本文实例讲述了Laravel框架控制器,视图及模型操作.分享给大家供大家参考,具体如下: 鉴于上一篇Laravel框架下载,安装及路由操作我们讲到了路由,可能大家会觉得路由这个东西无所不,可路由这个东 ...

  3. Java 双亲委派模型机制

    前言 Java是运行在Java的虚拟机(JVM)中的,在初步学习Java时,我们都知道,编写的Java源代码会被编译器编译成.class的字节码文件.然后ClassLoader负责将这些class文件 ...

  4. 双亲委派模型为什么要打破双亲委派模型

    目录 一:什么是双亲委派模型 二:什么情况下要打破双亲委派模型 三:如何打破 一:什么是双亲委派模型 Java 虚拟机对 class 文件采用的是按需加载的方式(也可以称之为懒加载),也就是说当 需要 ...

  5. java 打破双亲委派,为什么说java spi破坏双亲委派模型?

    虽然有SPI破坏双亲委派模型的说法,但我不太认同.简单说下. 双亲委派模型(再次吐槽下这个翻译),是一种加载类的约定.这个约定的一个用处是保证安全.比如说你写Java用了String类,你怎么保证你用 ...

  6. Java虚拟机:对象创建过程与类加载机制、双亲委派模型

    一.对象的创建过程: 1.对象的创建过程: 对象的创建过程一般是从 new 指令(JVM层面)开始的,整个创建过程如下: (1)首先检查 new 指令的参数是否能在常量池中定位到一个类的符号引用: ( ...

  7. 28 Java类的加载机制、什么是类的加载、类的生命周期、加载:查找并加载类的二进制数据、连接、初始化、类加载器、双亲委派模型、自定义类加载器

    28Java类的加载机制 28.1.什么是类的加载 28.2.类的生命周期 28.2.1.加载:查找并加载类的二进制数据 28.2.2.连接 28.2.3.初始化 28.3.类加载器 28.4.类的加 ...

  8. Android插件化开发基础之Java类加载器与双亲委派模型

    类加载器 Java虚拟机类加载过程是把Class类文件加载到内存,并对Class文件中的数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的java类型的过程. 在加载阶段,java虚拟机需 ...

  9. 【深入理解JVM】:类加载器与双亲委派模型

    转载自  [深入理解JVM]:类加载器与双亲委派模型 类加载器 加载类的开放性 类加载器(ClassLoader)是Java语言的一项创新,也是Java流行的一个重要原因.在类加载的第一阶段" ...

最新文章

  1. 移动端web设计尺寸_移动端页面设计规范尺寸大起底
  2. ASP.NET MVC 学习之路-4
  3. Android开发之虹软人脸识别活体检测SDK包Bitmap转NV21方法
  4. [css] 如何让一个块元素绝对居中?
  5. rabbitmq中默认unack超时时间_RabbitMQ 与 Kafka 的技术差异以及使用注意点
  6. rman全备时,配置项如何设置?
  7. 软件工程复习提纲——第十章
  8. 「开源资讯」Sentinel Go 0.4.0 发布,支持热点流量防护能力
  9. 做下一个互联网时代的“水电公司”——融云的通信云视野与蓝图
  10. Windows移动热点服务
  11. java实现户籍管理系统_基于jsp的户籍管理系统-JavaEE实现户籍管理系统 - java项目源码...
  12. 2021-07-28 cad贱人工具箱5.8
  13. [经典进程同步问题]哲学家思考
  14. 驾考 曲线行驶 s弯
  15. 消失的中国互联网元老陈天桥:为神经科学捐助10亿,不担心机器人崛起
  16. layer opcode oracle,ORACLE 事件追踪
  17. 数据湖与数据仓库的新未来:阿里提出湖仓一体架构
  18. 微商是如何推广的呢?
  19. Android手机通知栏工具,安卓通知栏美化工具(Flat Style Colored Bars)
  20. C# 通过反射根据描述特性转换枚举型值

热门文章

  1. 探究并发和并行、同步和异步、进程和线程、阻塞和非阻塞、响应和吞吐等
  2. 抢东西用的时间软件_番茄工作法app怎么用?这款时间管理便签软件教你
  3. uniapp微信小程序uni-load-more上拉加载更多数据
  4. Nero超刻DVDrip电影完全攻略
  5. Mattias Lasse:PDD-net in MICCAI
  6. 动态类型语言和鸭子类型
  7. mod 运算与乘法逆元
  8. js绝对值(负值转正)
  9. Alpha颜色混合的魔法 上篇 “法术篇”
  10. 「蓝桥杯」完全平方数(Java)