简介

当某个类加载器需要加载某个.class文件时, 它首先把这个任务委托给他的上级类加载器,递归这个操作,如果上级的类加载器没有加载,自己才会去加载这个类。

参考链接

https://www.jianshu.com/p/1e4011617650

类加载器类别

BootstrapClassLoader(启动类加载器)

c++编写,加载java核心库 java.*,构造ExtClassLoader和AppClassLoader。由于引导类加载器涉及到虚拟机本地实现细节,开发者无法直接获取到启动类加载器的引用,所以不允许直接通过引用进行操作

ExtClassLoader (标准扩展类加载器)

java编写,加载扩展库,如classpath中的jre ,javax.*或者

java.ext.dir 指定位置中的类,开发者可以直接使用标准扩展类加载器。

AppClassLoader(系统类加载器)

java编写,加载程序所在的目录,如user.dir所在的位置的class

CustomClassLoader(用户自定义类加载器)

java编写,用户自定义的类加载器,可加载指定路径的class文件

双亲委派机制的作用

1、防止重复加载同一个.class。通过委托去向上面问一问,加载过了,就不用再加载一遍。保证数据安全。

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

image

如何打破双亲委派机制

https://blog.csdn.net/cy973071263/article/details/104129163

java 双亲委派机制 & 与打破的更多相关文章

  1. 【java基础】- java双亲委派机制

    在了解双亲委派机制之前,你应当知道classloader(如果不了解,可以现在去恶补一下哈) 四种classloader 虚拟机自带 引导类加载器(Bootstrap ClassLoader) 扩展类 ...

  2. JVM类加载与双亲委派机制被打破

    前言 前文已经讲了虚拟机将java文件编译成class文件后的格式:JVM虚拟机Class类文件研究分析 java文件经过编译,形成class文件,那么虚拟机如何将这些Class文件读取到内存中呢? ...

  3. 【JAVA开发】浅析双亲委派机制

    双亲委派机制存在的意义 双亲委派只是一种说法,个人觉得叫单亲委派更合适,因为向上传递的父类只有一个,估计只是翻译过来的,形成的一种习惯,大家可以当做单亲委派 四种加载器都是用于类的加载,只是加载的对象 ...

  4. java的类加载器体系结构和双亲委派机制

    类加载器将字节码文件加载到内存中,同时在方法区中生成对应的java.land.class对象  作为外部访问方法区的入口. 类加载器的层次结构: 引导类加载器<-------------扩展类加 ...

  5. java安全沙箱(一)之ClassLoader双亲委派机制

    java是一种类型安全的语言,它有四类称为安全沙箱机制的安全机制来保证语言的安全性,这四类安全沙箱分别是: 类加载体系 .class文件检验器 内置于Java虚拟机(及语言)的安全特性 安全管理器及J ...

  6. 关于Java类加载双亲委派机制的思考(附一道面试题)

    预定义类加载器和双亲委派机制 JVM预定义的三种类型类加载器: 启动(Bootstrap)类加载器:是用本地代码实现的类装入器,它负责将 <Java_Runtime_Home>/lib下面 ...

  7. [五]类加载机制双亲委派机制 底层代码实现原理 源码分析 java类加载双亲委派机制是如何实现的

      Launcher启动类 本文是双亲委派机制的源码分析部分,类加载机制中的双亲委派模型对于jvm的稳定运行是非常重要的 不过源码其实比较简单,接下来简单介绍一下   我们先从启动类说起 有一个Lau ...

  8. java类加载过程以及双亲委派机制

    前言:最近两个月公司实行了996上班制,加上了熬了两个通宵上线,状态很不好,头疼.牙疼,一直没有时间和精力写博客,也害怕在这样的状态下写出来的东西出错.为了不让自己荒废学习的劲头和习惯,今天周日,也打 ...

  9. 【Java_基础】java类加载过程与双亲委派机制

    1.类的加载.连接和初始化 当程序使用某个类时,如果该类还未被加载到内存中,则系统会通过加载.连接.初始化三个步骤来对类进行初始化.如果没有意外,jvm将会连续完成这三个步骤,有时也把这三个步骤统称为 ...

  10. Java虚拟机类加载器及双亲委派机制

    所谓的类加载器(Class Loader)就是加载Java类到Java虚拟机中的,前面<面试官,不要再问我"Java虚拟机类加载机制"了>中已经介绍了具体加载class ...

随机推荐

  1. 小程序组件使用全局样式app.wxss

    Component({ options: { addGlobalClass: true } })

  2. Mysql数据库常用操作和Mysql大数据高效迁移方案

    1.数据迁移: 1.数据量较少时可使用mysqldump和mysql命令导出和导入 # 导出指定数据库系统 mysqldump -u _username -p _dbname > _sqlfil ...

  3. git 更新和强制更新失败

    Your local changes to the following files would be overwritten by mergeerror: Your local changes to ...

  4. 在Python后端项目FastApi中使用MongoDB进行数据处理

    我在前面随笔<在SqlSugar的开发框架中增加对低代码EAV模型(实体-属性-值)的WebAPI实现支持>中介绍了对于EAV数据存储的时候,我们把变化字段的数据记录存储在MongoDB数 ...

  5. Java编程--观察者(Observer)设计模式

    观察者设计模式 观察者设计模式是一种行为设计模式,允许对象在其状态改变时通知其他依赖对象.它创建了一种发布者(Subject)和订阅者(Observer)之间的依赖关系.这种模式经常用于实现事件处理系 ...

  6. 【MOOC】华中科技大学计算机组成原理慕课答案-第五章-指令系统测试

    1 以下四种类型指令中,执行时间最长的是( ) (单选) A. 程序控制类指令 B. RR型指令 C. RS型指令 √D. SS型指令 SS型指令是两个操作数都存在主存中,慢. 2 程序控制类指令的功 ...

  7. Alexander ——2024年报

    Alexander --2024年报 小总结 知己知彼,百战不殆.2024下半年找到了自己学习的方向,也认识很多的师傅,深入领域学习,无时不刻不在CTF的路上,逐渐建立一个完整的知识库体系. 今年的成 ...

  8. 重磅开源 基于AI大语言模型的AI 助手全套开源解决方案 AI开源平台

    介绍 GeekAI 基于AI大语言模型的AI 助手全套开源解决方案,自带运营管理后台,开箱即用.集成了 OpenAI, Claude, 通义千问,Kimi,DeepSeek等多个平台的大语言模型. 基 ...

  9. odoo14里面开发一个简单的action.client 的tag 模板例子

    1.js模板  web_template.js odoo.define('web', function (require) { "use strict"; var core = r ...

  10. Spring Boot 整合Redisson配置篇

    <Spring Boot 整合Redisson配置篇> <Spring Boot 整合Redisson操作Redis基础篇> <Redisson批量操作类RBuckets ...